Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GLAVA_5-6_vychislitelnya_matematika.doc
Скачиваний:
6
Добавлен:
01.03.2025
Размер:
395.78 Кб
Скачать

6.2. Метод Эйлера

Пусть задано дифференциальное уравнение и начальное условие y(x0)=y0. Требуется получить его приближенное численное решение. Рассмотрение метода Эйлера начнем с его геометрической интерпретации (рис. 6.1).

Разобьем отрезок интегрирования на n равных частей длиной h, где h- шаг интегрирования. Точка с координатами (x0,y0) нам известна из начальных условий. Проведем через нее касательную L1 к кривой F(x), уравнение которой имеет вид:

Группа 1

Но по условию и x1=x0+h, тогда следующую точку y1 решения дифференциального уравнения найдем как точку пересечения прямой x1=x0+h с касательной L1:

y1=y0+hf(x0,y0).

Ошибка, возникающая при нахождении y1, определяется отрезком e1. Через точку с координатами (x1,y1) проведем вторую касательную L2, ее уравнение имеет вид или .

Аналогично определяются точки с координатами (x3,y3), (x4,y4) и т.д. Таким образом, получаем формулу приближенного решения дифференциального уравнения методом Эйлера:

.

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

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

С целью повышения точности интегрирования дифференциального уравнения применяются различные усовершенствования метода Эйлера, известные как методы Рунге-Кутта. Основная идея этих методов состоит в том, что производные аппроксимируются через значения функции f(x) в точках на интервале [x0, x0+h], которые выбираются из условия наибольшей близости алгоритма к ряду Тейлора. В зависимости от старшей степени h, с которой учитываются члены ряда, построены вычислительные схемы Рунге-Кутта разных порядков точности.

Так, для второго порядка получены формулы численного интегрирования дифференциального уравнения

известные также как формулы исправленного и модифицированного методов Эйлера соответственно.

Для построения вычислительной схемы метода Рунге-Кутта четвертого порядка в тейлоровском разложении искомого решения y(x) учитываются члены, содержащие степени шага h до четвертой включительно. После аппроксимации производных правой части дифференциального уравнения получают формулу численного интегрирования

где

Данная схема на каждом шаге h требует вычисления правой части дифференциального уравнения в четырех точках.

Пример. На отрезке [0, 1] составить таблицу значений приближенного решения дифференциального уравнения с шагом интегрирования h=0,1. Для оценки результатов расчета вывести также значения точного решения уравнения по формуле

Программа решения поставленной задачи может иметь следующий вид:

Uses Crt;

Label 1,2;

Type mas=array[1..25] of real;

Var x,y,z:mas; h,b:real;

n,i:integer; c,yes:char;

Function Fz(x:real):real; {Точное решение уравнения}

Begin

Fz:=x-1+exp(-x)

End;

Function Right(x,y:real):real; {Вычисление правой части уравнения}

Begin

Right:=x-y

End;

Procedure Eyler(Var x,y,z:mas); {Метод Эйлера}

Begin

For i:=2 to n do Begin

y[i]:=y[i-1]+h*Right(x[i-1],y[i-1]);

x[i]:=x[i-1]+h;

z[i]:=Fz(x[i])

End; End;

Procedure Eyler1(Var x,y,z:mas); {Исправленный метод Эйлера}

Var k,l:real;

Begin

For i:=2 to n do Begin

k:=Right(x[i-1],y[i-1]);

l:=Right(x[i-1]+h,y[i-1]+h*k);

y[i]:=y[i-1]+h*(k+l)/2;

x[i]:=x[i-1]+h;

z[i]:=Fz(x[i])

End; End;

Procedure Runge(x,y,z:mas); {Метод Рунге-Кутта четвертого порядка}

Var k1,k2,k3,k4:real;

Begin

For i:=2 to n do Begin

k1:=Right(x[i-1],y[i-1]);

k2:=Right(x[i-1]+h/2,y[i-1]+k1*h/2);

k3:=Right(x[i-1]+h/2,y[i-1]+k2*h/2);

k4:=Right(x[i-1]+h,y[i-1]+k3*h);

y[i]:=y[i-1]+(k1+2*k2+2*k3+k4)/6;

x[i]:=x[i-1]+h;

z[i]:=Fz(x[i])

End;

End;

Begin {Основная программа}

x[1]:=0; b:=1; h:=0.1;

y[1]:=0; z[1]:=y[1];

n:=Trunc((b-x[1])/h)+1;

1:ClrScr;

Writeln('Выберите метод расчета');

Writeln('1 - Метод Эйлера');

Writeln('2 - Исправленный метод Эйлера');

Writeln('3 - Метод Рунге-Кутта четвертого порядка');

c:=Readkey;

Writeln('***** Результаты расчета *****');

Case c of

'1': Begin

Eyler(x,y,z);

Writeln('Решение методом Эйлера')

End;

'2': Begin

Eyler1(x,y,z);

Writeln('Решение исправленным методом Эйлера')

End;

'3': Begin

Runge(x,y,z);

Writeln('Решение методом Рунге-Кутта четвертого порядка')

End;

Else Begin

Writeln('Ошибка при выборе метода расчета');

goto 2; End;

End;

Writeln('x':5,' y':10,' z':10);

For i:=1 to n do

Writeln(' ',x[i]:3:2,' ',y[i]:3:6,' ',z[i]:3:6);

2:Write('Желаете продолжить работу (Y/N) ?');

Readln(yes);

If (yes='Y') or (yes='y') Then goto 1;

End.

Выводы

  1. Численные методы решения обыкновенного дифференциального уравнения - это алгоритмы вычисления приближенных значений искомой функции y(x) на некотором интервале [x0, xn]. Эти методы не позволяют найти общего решения уравнения (6.1); они могут дать только какое-то частное решение, например, решение задачи Коши.

  2. Методы Рунге-Кутта обладают достаточно высокой точностью. Они являются явными, т.е. значение yi+1 вычисляется по ранее найденным значениям и определенным формулам. Данные методы допускают расчет с переменным шагом, удобны при программной реализации, однако в них трудно оценить погрешность ограничения (метода).

  3. Для оценки погрешности метода на каждом шаге интегрирования и принятия решения о соответствующем изменении шага используются методы прогноза и коррекции (Рунге-Кутта - Мерсона, Адамса). Они более экономичны по затратам машинного времени, поскольку в них используется информация о предшествующей точке. Последнее обстоятельство, однако, приводит к тому, что с этих методов нельзя начинать решение дифференциального уравнения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]