Скачиваний:
36
Добавлен:
20.05.2014
Размер:
341.5 Кб
Скачать

- 54 -

Лекция 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.

Соседние файлы в папке Лекции