Выбор шага и погрешность решения
Одним из важнейших практических вопросов, которые встают перед инженером, составляющим программы решения дифференциальных уравнений, является выбор подходящей величины шага. Если шаг слишком мал, то расчёт потребует неоправданно много машинного времени, а число ошибок на отдельных шагах, складывающихся в суммарную ошибку, будет весьма велико. Если же наоборот - шаг выбран слишком большим, то значительной будет погрешность, обусловленная усечением рядов, и накопившаяся суммарная ошибка будет также недопустимо большой (рис.3.6). Рис. 3.6. Выбор оптимального шага интегрирования Кроме того, при больших значениях h возникает опасность появления цифровой неустойчивости решения. Важно различать между собой две меры погрешностей дискретизации [9],[10]: а) локальная ошибка - это погрешность, вносимая в вычислительный процесс на каждом шаге вычислений. б) глобальная ошибка - это разность между вычисленным и точным значениями величины на всем этапе реализации численного алгоритма, определяющая суммарную погрешность, накопившуюся с момента начала вычислений. Обычно, выбирая величину шага, стремятся, чтобы локальная ошибка на шаге была меньше некоторой заданной допустимой величины. Вообще говоря, если порядок точности метода Р, то локальная ошибка определяется выражением: L(h) = c hp+1, где c - некоторая постоянная; h - шаг интегрирования. Указанное выражение с помощью θ-символики может быть записано более компактно: L(h) = θ (hp+1). Например, рассмотрим метод Эйлера:
Отсюда заключаем, что для метода Эйлера p =1, т.е. метод имеет первый порядок точности, а локальная ошибка определяется формулой: L(h) = θ (h2). Рассмотрим теперь глобальную ошибку дискретизации в конечной точке t=tN. По мере повышения требований к точности, длина шага h будет убывать, а общее из числа N, необходимое для достижения tN, будет возрастать:
Далее, глобальная ошибка E(h) может быть представлена как сумма N локальных ошибок и поэтому мы можем, округляя, записать: E(h) = N θ(hp+1) = θ(hp). Для метода Эйлера p =1, так что уменьшение длины шага в 2 раза уменьшает среднюю локальную ошибку примерно в 2p+1 = 4 раза. Но так как для достижения tN теперь потребуется вдвое больше шагов, то глобальная ошибка ум-еньшится лишь в 2p = 2 раза. Если используется один из методов прогноза и коррекции, то ошибка на шаге определяется величиной последнего члена в формуле коррекции. При использовании же одношаговых методов Рунге-Ку-тта, локальную ошибку не удается выразить в явной форме. Один из методов оценки этой ошибки основан на двойном счете. Если для вычисления значения искомой функции yn+1 в точке tn+1 используется шаг h, то разность между истинным и вычисленным значениями на данном шаге равна:
Если уменьшим шаг вдвое и выполнив два шага вычислим в точке tn+1, то получим: (3.21) Вычитая это выражение из предыдущего, найдем: Отсюда можно найти локальную погрешность: (3.22) Данная формула называется правилом Рунге. Если ошибка на данном шаге слишком велика, то шаг делят пополам и вычисления повторяют вновь. Запишем формулу (3.22) в виде: Подставляя полученное выражение в (3.21) и полагая p=4, найдём приближенное значение ошибки на одном шаге: (3.23) Из (3.23) вытекает уточнённое решение: Недостатком этого метода является то, что значение yn+1 приходится вычислять дважды, причем второй раз с помощью двух шагов. Тем не менее, эта процедура часто включается в вычислительный алгоритм для автоматического изменения шага в процессе вычислений и часто используется в методах Рунге - Кутта. Главное достоинство методов Рунге - Кутта - простота начала счета и возможность изменения величины шага в процессе вычисления. С другой стороны, главным достоинством методов прогноза и коррекции является простота оценки ошибки на шаге.
|