
Лекции / L007
.doc
-
Лекция 7. ПОГРЕШНОСТИ И УСТОЙЧИВОСТЬ РЕШЕНИЯ ОДУ.
7.1. Погрешности решения ОДУ.
При решении ОДУ
любым численным методом на каждом шаге
имеем, как и в разделе 4.2, погрешности
метода, погрешности исходных данных и
погрешности округления. Но, кроме того,
появляется еще одна погрешность,
обусловленная тем, что на каждом шаге
погрешность значения
при вычислениях переходит в значение
с некоторым коэффициентом
,
который называется коэффициентом
усиления погрешности. Поэтому погрешность
на шаге
представим в виде трех слагаемых
|
(7.1) |
где
- это погрешность метода,
- учитывает суммарное влияние погрешностей
исходных данных и округления. Погрешность
(7.1) соответствует одному шагу и поэтому
называется локальной. Рассмотрим ее
составляющие.
Оценки (6.10 - 6.12)
определяют значения
,
т.е. погрешность метода убывает при
уменьшении шага
и при увеличении порядка метода
.
Например, при уменьшении шага в два раза
погрешность метода Эйлера уменьшится
в 4 раза, а погрешность метода Рунге-Кутта
в 32 раза.
Значение
можно оценивать некоторым значением
(например
),
как в разделе 4.2.
При решении ОДУ в случае большого количества шагов очень опасно третье слагаемое в (7.1), для которого формулируется условие устойчивости: погрешность на шаге не должна усиливаться, т.е. должно быть
|
(7.2) |
Значения
зависят от шага и метода и будут
рассмотрены ниже.
При выполнении
шагов происходит накопление всех
локальных погрешностей и погрешностей
решения
в конечной точке
называется глобальной. Оценим вклад в
глобальную погрешность каждого из
слагаемых в (7.1). Будем считать, что на
каждом шаге первые две погрешности из
(7.1) суммируются, а последняя умножается
на коэффициент
,
т.е. получаем
|
(7.3) |
где
- это оценка локальной погрешности для
первого шага. Подставляя в (7.3) значения
,
,
,
получаем, что
|
(7.4) |
где
,
,
- некоторые константы, зависящие от вида
функции и длины отрезка интегрирования
,
причем коэффициент
обычно возрастает при увеличении шага.
Глобальная погрешность
может стать значительной как при крупных
шагах, так и при очень мелких, что показано
на рис. 7.1 для случаев
и
.
В последнем случае решение при крупных
шагах является неустойчивым.
|
Рис.7.1.
Влияние величины шага
|
Любой метод решения ОДУ должен быть устойчивым, точным, эффективным.
7.2. Условие устойчивости для метода Эйлера.
Рассмотрим более
подробно процесс накопления погрешностей,
обусловленных третьим слагаемым в
(7.1), на примере метода Эйлера
,
.
По аналогии с (4.5) пусть
- это точное решение уравнения (6.2), а
значение
характеризует суммарную погрешность
решения на шаге c произвольным номером
,
т.е.
|
(7.5) |
Запишем два
слагаемых ряда Тейлора, (т.е. формулу
метода Эйлера) для
вблизи точки
:
|
(7.6) |
считая последующие слагаемые малыми.
,
подставим (7.5)
.
В основную формулу метода Эйлера (6.3) и используем еще один ряд Тейлора для функции двух переменных, учитывая в нем только два первых слагаемых,
.
После подстановки с учетом равенства (7.5) получаем
,
и, следовательно, коэффициент усиления погрешности
|
(7.7) |
Если функция
такова, что на всех или почти всех шагах
значение
,
то это означает нарушение условия
устойчивости (7.2) и третье слагаемое в
(7.4) при больших значениях N может полностью
"замаскировать" решение. Это
особенно опасно для убывающих решений,
которым соответствуют отрицательные
производные
при
.
Для возрастающих решений нарушение
условия устойчивости обычно не приводит
к сильной неустойчивости. Следовательно,
для устойчивости метода Эйлера в случае
убывающих решений должно быть
|
(7.8) |
т.к. при
имеем
.
В качестве примера рассмотрим известное уравнение
|
(7.9) |
при
,
которое в случае
дает убывающее решение
.
Для этого уравнения условие устойчивости
метода Эйлера (7.8) имеет вид
|
(7.10) |
Условие (7.10) жестко
ограничивает шаг в методе Эйлера, т.к.
в случае его нарушения развивается
неустойчивость. Эффект неустойчивости
проявится в том, что после некоторого
количества шагов по методу Эйлера (6.3)
функция
будет иметь шумовой характер со
значительными выбросами, что показано
на рис.7.2. На этом рисунке точное решение
не
видно из-за масштаба, а метод Эйлера
дает значения
,
где
- номер шага.
|
Рис. 7.2. Неустойчивость метода Эйлера при решении (7.9) в случае a = 20, h = 0.2. |
7.3. Устойчивость неявного метода Эйлера
Повторим все
преобразования предыдущего раздела
для неявного метода Эйлера (6.6) вместо
(6.3). При этом в качестве основной возьмем
точку
вместо
и запишем (7.6) в виде
|
(7.11) |
Значение коэффициента
в (7.7) изменится и будет иметь вид
|
(7.12) |
Для уравнений с
затуханием, которым соответствуют
значения ,
,
получаем всегда
,
т.е. неявный метод Эйлера устойчив при
любых шагах
(см. рис.7.1).
Другие неявные методы, как и неявный метод Эйлера, всегда устойчивы и поэтому они широко применяются для решения систем ОДУ при моделировании схем в радиоэлектронике (см. лекцию 10).
7.4. Контроль точности и автоматический выбор шага
1. Пусть каким-либо
методом выполнен текущий
-ый
шаг из точки
в
и получено значение
,
погрешность которого нужно оценить.
Как и в лекции 4, для определения локальной
погрешности
необходим повторный расчет для этого
шага либо с другим шагом, либо другим
методом. Обычно при решении ОДУ применяется
повторный расчет другим методом.
Обозначим значение
второго решения в точке
через
и сравним его с первым решением
.
Так как они должны совпадать, то их
разность можно принять за оценку
погрешности
|
(7.13) |
2. Пусть задана
допустимая абсолютная погрешность
и коэффициент
,
определяющий диапазон допустимых
погрешностей как [
,
],
например, v=0.2. Полученное значение
должно попадать в указанный диапазон,
а иначе полагается, что шаг выбран
неправильно. При этом рассматриваются
следующие случаи:
1) если
,
то расчет на шаге слишком точен и
следующий шаг можно увеличить;
2) если
,
то значение шага сохраняется;
3) если
,
то шаг слишком велик и должен быть
отброшен, т.е. происходит возврат в левую
точку шага, шаг уменьшается и повторяется
расчет двумя методами.
3. Как выбрать новый шаг в случае его уменьшения или увеличения? Так как обычно при расчетах основной является погрешность метода, то в соответствии с (6.11) можно положить
- погрешность
полученная при шаге
,
- заданная погрешность.
где
- это новое значение шага обеспечивающие
погрешность,
- коэффициент, не зависящий от шага.
Выполнив деление обеих частей этих
формул, получаем, что
|
(7.14) |
Рассмотренную
процедуру оценки локальной погрешности
на шаге и определения величины нового
шага называют автоматическим выбором
шага. Она позволяет вести расчет с
переменным шагом, что обеспечивает
точность и эффективность расчетов.
Например, в модифицированном методе
Рунге-Кутта [Ф1] два расчета на каждом
шаге выполняются методами с порядками
и
.
4. При автоматическом
выборе шага контролируется локальная
погрешность, а для грубой оценки
глобальной погрешности можно считать,
что она не превышает значения
,
где
- это количество шагов на отрезке
интегрирования ОДУ.
В заключение
отметим, что при программной реализации
метода Эйлера в системе MathCAD используют
массивы
,
,
а при программировании на языках,
например, на Си, расчет ведут со скалярными
переменными
и
,
записывая в выходные массивы
и
лишь каждый
-ый
шаг.
Приводим пример
программы для метода Эйлера с постоянным
шагом
.
На экран выводятся значения
,
,
,
через каждые
шагов. Решается при
уравнение (7.9), для которого точное
решение
позволяет вычислять погрешность
на каждом шаге. Неустойчивое решение
этого уравнения было рассмотрено на
рис. 7.2.
main() { int N=500, m=50; int k; float x=0, y=1, h=.001, pgr=0; float f;
for( k=0; k<=N; k++ ) {if((k%m)==0) printf("%4i %6.3f %11.3g %9.1e\n",k,x,y,pgr); f=-20.*y; y=y + h*f; x=x + h; pgr=y - exp(-20. * x); }} |
При выбранном шаге
интегрирования
значение относительной погрешности
увеличивается от 0 до 0.1 при
,
т.е. до 10%.
В старших версиях системы MathCAD есть функции, реализующие методы высоких порядков, например, Rkfixed, Rkadapt, Bulstoer.