Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по ДИФУРАМ 2тTTт.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.07 Mб
Скачать

Метод Рунге-Кутта

Данный метод получается при рассмотрении 5 членов разложения в ряд Тейлора функции y(x) в точке :

y ( +h)=y( )+ ( )h + + + +o( )

= +h , где

= f( , ),

==f( + , + ),

= f( + , + ),

= f( +h, +h ).

При этом получаем, что y ( +h)= + o( ), т.е. разностная формула точна до членов четвёртого порядка по h.

III. Анализ решения различных дифференциальных выражений

dy/dx = (1 y2)1/2

В данном примере при относительно больших шагах (H) происходит: нарушение достаточного условия единственности. Т.к. при Y стремящемся к ±1 происходит быстрая переориентация поля направлений, и касательная не успевает за производной функции f(x,y). Её можно избежать, уменьшив шаг (H).

Как это происходит?

На очередном шаге, очень близком к Yn → ±1 ломанная Эйлера не успевает отслеживать изгиб интегральной кривой, и вылетает за границу решения. На рисунке показано как это происходит.

Sn – имеющаяся ошибка, S(n+1) – ошибка на очередном шаге.

Постепенно уменьшая шаг интегрирования, я заметил, что метод Эйлера первый стал показывать безошибочное решение, затем метод Штермера, и только потом метод Рунге – Кутта. Метод с регулировкой шага в уравнении всегда дает ошибку, так как функция достаточно гладкая, этот метод с каждым новым расчетом увеличивает шаг и не может вовремя, в частности вблизи Y = ±1, «затормозить, из-за чего и вылетает за пределы существования функции.

В связи с достаточной гладкостью функции при минимальном шаге можно получить очень точные решения на всех методах, за исключением, разумеется, метода с регулировкой шага.

Других видимых ошибок я в этом примере не обнаружил.

dy/dx = (y+(y2-4x2)1/2) / x

Р ассмотрим нижнюю область. Близкую к Y=0.

Решая методом Эйлера и другими методами возни­кает ошибка : нарушение достаточных условий единст­венности.

т. е. быстрая пере­ориентация поля направле­ния. Причём всё это проис­ходит при достаточно боль­ших шагах.

Уменьшив шаг мы добьемся желаемого результата. Первым покажет правильный результат метод Рунге-Кутта, и далее в обратном порядке, за исключением опять метода с регулировкой шага.

Чем более Y → 0, тем меньшим должен быть шаг.

Теперь рассмотрим верхнюю область.

При H > 0 все методы без исключения дают правильный результат, так как направление поля очень ровное. Самое интересное начинается если H < 0. Здесь возможны варианты.

При малых шагах программа выдаёт результат: бесконечное зна­чение правой части: нарушение достаточного условия существования. Функция стремится к бесконечности, ошибка шага неограниченно возрастает.

При больших шагах возникает: нарушение достаточных условий единст­венности.

А если соответствующим образом подобрать шаг и начальную координату (см. рис.), то получим интересное явление. Функция проходит до Y=0, далее точно попадает в 0, тем самым она попадает в особую точку, и далее переходит на частное решение, по которой благополучно и уходит из поля нашего зрения. Функция получается словно «склеенной». «Шаг вправо, шаг влево» и вылезают вышеперечисленные ошибки.

Было замечено, что при x=0, y>0. программа вылетает.

dy/dx = (4-y2)1/2 / y

С разу заметим, что прямые Y=±2 тоже удовлетво­ряют нашему уравнению, а Y = 0 не является ре­шением.

Решения полученные нашими методами совпадают с точным решением только когда Н > 0 ( - метод рег. шага).

Метод Эйлера выдаёт очень неточное решение. Метод Штермера и Рунге-Кутта близки к точному. С уменьшением шага ошибка нарушения достаточного условия единственности пропадает, и все ме­тоды начинают показывать достаточно точные решения ( - метод рег. шага).

Если H < 0, то происходит ошибка при переходе фазовых траекторий, связанная с нарушением достаточных условий существования.

Причём этим отличились все методы, и точного решения я так и не увидел ни при каких начальных условиях.

Так же было замечено, что чем ближе Y0 к Y=0, тем больший шаг доступен для правильного решения. Это можно объяснить тем, что с увеличением «длины» графика, касательной остается больше места для «стратегических маневров». Так же замечено, что чем выше порядок членов Н, тем большую разность шага можно допустить, это объясняется более точными вычислениями методов.

И всё это не относилось к методу регулировки шага.

dy/dx = 1/2(y2-1)

Начальные условия

X = -1,62566841

Y = 0,94285715

Шаг = 0,05

Все методы строят достаточно точные решения. Единственное, метод Эйлера выдаёт заметные, но небольшие погрешности по сравнению с методами высших порядков. И практически как всегда, отличился метод с регулировкой шага. Этот метод строил график вдоль направляющих, достаточно далеко от точного решения. При уменьшении шага метод Эйлера так же начинает показывать достаточно точные решения.

Видимо при ещё более малых шагах, которые нам программно недоступны могут возникать ошибки конечно-разрядной арифметики.

Других ошибок замечено не было.

dy/dx = xy(1+2y)/(1-y2)

В этом примере можно выделить 5 основных областей, в которых при соблюдении некоторых условий, различные методы дают, по-видимому, точный результат. И еще одну область, где ни один метод не даёт более или менее вразумительного ответа.

1) Y<-1, X>0, H>0

2) Y<-1, X<0, H<0

3) -1<Y<0 , любой X

если h>0 график вправо

если h<0 график влево

4) Y>1, X ≥ 0.60962558, h<0

5) Y>1, X ≤ 0.60962558, h<0

И, так сказать, промежуточная область, где и происходят все ошибки.

Выше прямой y=1, можно утверждать, что все численные методы допускают грубую ошибку при «y» близком к 1. т.к. тут нарушается достаточное условие существования решения.

На рисунке показано, какие ошибки происходят при различных методах из различных начальных условий.

Ошибки перехода с одной фазовой траектории на другую, связанные с нарушением достаточного условия существования решения

Результат таков: В связи с достаточной сложностью кривой ни один из используемых методов не показал достаточно правильные решения в обозначенной области.

x’=y-0.1x; y’=-x-0.1y

К ак видно на рисунке метод Эйлера выдаёт не точное решение, так как в вычисление ошибки участвует только ошибка предыдущего шага. Методы Штермера и Рунге-Кутта показывают точные решения, так как каждая следующая оценка ошибки получается через несколько предыдущих в котором Метод же с регулировкой шага даёт совсем не правильное решение, здесь присутствует ошибка вычислительной неустойчивости.

При шаге h>0,198 вычислительная неустойчивость появляется и для метода Эйлера, что не скажешь про методы Штернера и Рунге-Кутта, которые продолжают считать правильно.

С уменьшением шага точность метода Эйлера начинает приближаться к другим методам высших порядков и в конце концов показывает точное решение. Откуда же взялось h=0.198 можно сказать, что случайно, но на самом деле h можно посчитать.

Рассмотрим процесс однажды возникшей ошибки. Пусть на шаге n ошибка равняется Jn. Тогда новое значение уn+1 будет подсчитано с ошибкой Jn+1.

yn+1 + Jn+1 =yn + jn + hf(xn, yn+jn) +o(h)

Считая jn , h малыми и отбрасывая нелинейные по члены в разложении Тейлора, в линейном приближении получим.

Вычислительная неустойчивость будет наблюдаться при таких h, при которых | 1+h f(xn,yn)/y | принимает значения больше единицы. Для систем уравнений аналогичное условие заключается в том, что определитель матрицы

(Е +h Df(xn,yn)/Dy) (где Е – единичная матрица, а - матрица Якоби по переменным у) должен стать больше единицы.

Для данной системы Р находится так: Её определитель:

Условие | | >1 будет выполнено при h> 0.2/1.01  0.2

x’=y-x(x2+y2); y’=-x-y(x2+y2)

Можно заметить, что поле направлений очень похоже на предыдущий пример, но само уравнение существенно нелинейное. Такие уравнения характеризуются тем, что сколь угодно малая добавка в их правые части может породить предельный цикл, а при численном моделировании такие добавки могут играть ошибки.

В этом примере при начальных условиях выставленных по умолчанию и использовании метода Эйлера наблюдается эффект предельного цикла, квадрат радиуса которого равен Н/2. При увеличении шага интегрирования этот эффект стал заметен и на других методах более высокого порядка.

Заключение.

В результате проведенных исследований можно подвести итоги проделанной работы:

- Познакомились с некоторыми численными методами, которые позволяют построить график функции.

- Научились распознавать различные ошибки, возникающие при решении дифференциальных уравнений численными методами по графику функции.

- Научились ликвидировать эти ошибки различными методами.

- По внешнему виду уравнения можем, с некоторой степенью уверенности, сказать, какие ошибки следует ожидать при решении данного дифференциального уравнения численными методами.

- Узнали, что метод Рунге-Кутта наиболее точный, но медленный, а метод Эйлера наиболее быстрый, но менее точный.

15