Численные методы решения задачи Коши для систем обыкновенных дифференциальных уравнений
8.4. Оценка погрешности
8.4.1. Автоматический выбор шага интегрирования
Рунге предложил простое правило оценки точности метода, основанное на проведении вычислений с разными шагами интегрирования. Основная идея правила Рунге заключается в следующем.
Погрешность численного метода порядка p - 1 в точке представляется в виде
![u_n (t_i) - \tilde V_n (t_i) = C {\tau}^{p} + O({\tau}^{p + 1}).](/sites/default/files/tex_cache/47cd3a5e849f23e37f0c4e8f83ca91e8.png)
Если выполнить аналогичные вычисления с шагом вдвое меньшим, то получим
![$ u_{2n} - \tilde V_n (t_i) = 2C \frac{{\tau}^p}{2^p} + O({\tau}^{p + 1}). $](/sites/default/files/tex_cache/a31a265b42d8cb3e2f772cc2f4f02df5.png)
После вычитания из первого соотношения второго
![$ u_n - u_{2n} = C ({\tau}^{p} - \frac{{\tau}^p}{2^{p - 1}}) + O({\tau}^{p + 1}), $](/sites/default/files/tex_cache/8160cd832948fce65e1b8ddaee47a1f6.png)
откуда
![$ C = \frac{2^{p - 1}}{{\tau}^{p}} \frac{u_n - u_{2n}}{2^{p - 1} - 1} + O ({\tau}). $](/sites/default/files/tex_cache/54ee7a3900f799b4f927df29e3b9aec4.png)
Подставив выражение для C во второе соотношение, получим
![$ u_{2n} - \tilde V_n (t_i) = \frac{{u_n - u_{2n}}}{{2^{p - 1} -
1}} + O({\tau}^{p + 1}), $](/sites/default/files/tex_cache/dacfc3a1005872ff5e66ad9a0892d6f2.png)
т.е. погрешность метода, с точностью оценивается по простой формуле
![$ \varepsilon = \frac{u_n - u_{2n}}{2^{p - 1} - 1}. $](/sites/default/files/tex_cache/a77deffe00d54d35c192a684761e64e3.png)
Это правило используется не только для оценки погрешности вычисления, но и
для автоматического выбора шага интегрирования. Для этого на каждом шаге вычисления производятся трижды: с шагом и с двумя шагами
Полученные значения un и u2n используются для вычисления реальной погрешности
(точнее, оценки ее главного
члена). Если величина
превышает некую заданную (или заранее
выбранную) константу
то шаг интегрирования уменьшается; если, напротив,
существенно меньше
то
увеличивается.
Разумеется, алгоритмы выбора шага интегрирования могут основываться и на иных принципах. Например, можно выбрать адаптирующимся к решению:
уменьшать при увеличении абсолютной величины производной и увеличивать при ее уменьшении, т.е. вычислять
как функцию от
Управление длиной шага в методах Рунге - Кутты осуществляется на основе сравнения с некоторой задаваемой величиной T, характеризующей требования к погрешности на каждом шаге численного интегрирования системы.
Пусть используется метод с порядком аппроксимации p. Тогда главный член погрешности
метода определяемый по правилу Рунге, или, в случае
использования вложенных методов Рунге - Кутты, представляющий собой модуль разности между приближениями к решению, вычисленными по формулам (8.5) и (8.6), имеет вид
![\varepsilon = C_2 {\tau}^{p + 1} \le T.](/sites/default/files/tex_cache/6a2260b66619f5be9c07ea82f5954dfe.png)
Положим теперь Тогда для величины максимального значения нового шага интегрирования
получаем
![$ {\tau}_{new} = \beta {\tau}\left({\frac{T}{\varepsilon }}\right)^{1/(p + 1)}, $](/sites/default/files/tex_cache/e331e29256c844ea858adb2f26f0d004.png)
где — так называемый гарантированный множитель. Он
служит для того, чтобы в случае резкого уменьшения шага (например, при выходе на
жесткий участок при решении умеренно жестких систем ) численный метод оставался устойчивым.
Кроме того, гарантированный множитель помогает избежать слишком быстрого
увеличения величины шага интегрирования в случае, когда реально полученная погрешность мала. Обычно величина гарантийного множителя принимается за 0, 5; 0, 8; 0, 9 или
Если при выполнении очередного шага погрешность не
превосходит величины T, то шаг считается принятым, а
дальнейший расчет продолжается с шагом
в противном случае шаг считается отклоненным, и проводится пересчет с новым
значением шага для перехода от tn к tn + 1.
На практике применяют модернизации алгоритма выбора шага. Так, если
реальная ошибка мала, то предлагаемый алгоритм позволяет
выбрать очень большой шаг по
В таком случае применяют алгоритм
![$ {\tau}_{new} = {\tau}\cdot \min \left\{{\beta_{\max }, \max \left({\beta_{\min }, \beta \left({\frac{T}{\varepsilon }}\right)^{1/(p + 1)}}\right)}\right\}. $](/sites/default/files/tex_cache/211e359d419f7fb6ae47cca9ba621a7f.png)
Здесь — максимальное и
минимальное разрешенное изменение шага интегрирования.
Другая возможность регулировки шага численного интегрирования для методов Рунге - Кутты заключается в объединении достоинств методов Рунге - Кутты и Адамса. Первые из них допускают легко регулировать шаг интегрирования, а вторые помнят часть предыстории изменения функции.
Более тонкий алгоритм управления величиной шага получается с учетом величины ошибки на предыдущем шаге
![$ {\tau}_{new} = {\tau}\left({\frac{T}{\varepsilon_n}}\right)^{a} \left({\frac{T}{{\varepsilon_{n - 1}}}}\right)^{- \beta }, $](/sites/default/files/tex_cache/081090216706849469f9a08b392ba501.png)
т.е. фактически гарантийный множитель зависит от ошибки на предыдущем
шаге. Обычно при таком выборе управления длиной шага полагается
Такой выбор регулировки шага повышает устойчивость численных методов Рунге - Кутты не очень высокого порядка. Для метода Дормана - Принса порядка 8(7) лучшие результаты дает
В [8.10] показано, что такой метод выбора шага является решением задачи оптимального управления с учетом пропорциональной обратной связи и интегральной обратной связи. Там же показано, что оптимальный выбор
показателей степени есть