Займемся теперь оценкой перенесенных погрешностей
a) Теорема.
Обозначим
Пусть в
Тогда имеет место следующая оценка глобальной погрешности (2.7.15):
где
и
Доказательство.
При
Подставляя в неравенство
выражение (2.7.18) с учетом (2.7.16) и принимая во внимание, что
Выражение в квадратных скобках мажорируется следующими интегралами:
Отсюда вытекает справедливость оценки (2.7.18).
b) При втором способе переноса погрешностей рассмотрим кроме (2.7.14) еще одно численное решение, значения которого в соседних узлах связаны равенством
Оценим норму разности
Вычитая из этих формул соответствующие формулы (2.3.1), получим для норм разностей такие оценки:
Оценивание римановых сумм методом a) и b)
Пусть
где
Из (2.7.22) получаем искомую оценку:
и с её помощью оценку перенесенных погрешностей вместо оценки (2.7.19).
Предположим, что для начальных значений, лежащих на точном решении, локальная погрешность удовлетворяет оценке
и что в окрестности решения функция приращения
Тогда для глобальной погрешности (2.7.15) справедлива следующая оценка:
где
1.8 Оптимальный выбор шага
Предположим, что при интегрировании от точки
С другой стороны, затраты будут пропорциональны числу шагов, которое приближенно равно
Методами вариационного исчисления можно показать, что если мы хотим минимизировать затраты
В современных программах[4], реализующих методы Рунге-Кутты, обязательно используется некоторый алгоритм автоматического изменения шага интегрирования. Интуитивно ясно, что на участках плавного изменения решения счет можно вести с достаточно крупным шагом. В то же время, на тех участках, где происходят резкие изменения поведения решения, необходимо выбирать мелкий шаг интегрирования. Обычно начальное значение шага задет пользователь или оно определено в программе. Далее шаг интегрирования изменяется в соответствии с величиной, получаемой в ходе вычисления оценки локальной погрешности.
Существует достаточно много способов оценки локальной погрешности, среди которых так называемое правило Рунге. Однако в моей программе я использовал самый простой и в то же время эффективный способ оценки локальной погрешности, который описан в разделе 3.1. «Описание программы Ilya RK-4 версия 1.43». Этот метод базируется на удвоении или делении пополам длины шага в зависимости от отношения локальной погрешности и максимально локальной допустимой погрешности
2.1 Описание программы «Ilya RK-4 версия 1.43»
Программа для нахождения интегральной кривой, удовлетворяющей поставленной задаче Коши написана на языке высокого уровня Borland C++ 3.1. Программа состоит из четырех функций. При помощи директив препроцессора #define определены максимальный шаг и величина локальной максимальной погрешности, а также номер версии программы. Рассмотрим подробнее работу программы в комплексе.
Функция title() предназначена для печати на экране названия программы.
Функция do_step() совершает один шаг Рунге-Кутты и возвращает полученное значение. В качестве входных параметров в нее передается текущее положение, значение искомой функции, вычисленное на предыдущем шаге и величина шага, с которым требуется произвести шаг.
Функция f() задает правую часть дифференциального уравнения, левая часть дифференциального уравнения равна
Функция main() – основная функция программы. У пользователя запрашивается точка, начиная с которой необходимо отобразить решение задачи Коши, точка, правая граница интегрирования и значение в левой точке, через которое обязана проходить искомая интегральная кривая. После этого программа начинает вычислительный процесс, выводя полученные значения на экран в виде списка и в текстовый файл “rk4.txt” на диск. После того, как будет достигнута правая граница интегрирования, процесс остановится и пользователю будет предложено нажать на любую клавишу для того, чтобы построить график. Для построения графика программа переключается в графический режим. График масштабируется с учетом того, чтобы он всегда был виден на экране вне зависимости от того, как высоко или низко от оси абсцисс он лежит. Кроме того, программа постарается сделать его максимально наглядным. Для этого будут проведены пунктирные линии, соответствующие минимальному и максимальному значению интегральной кривой, левому и правому концам интегрирования, а также значению интегральной кривой в указанной точке