Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Турбо Паскаль.doc
Скачиваний:
61
Добавлен:
23.09.2019
Размер:
939.52 Кб
Скачать

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

Для повышения точности вычисления значений функции требуется проведение дополнительных вычислений внутри интервала h, то есть между xi и xi+1. Метод Рунге-Кутта даёт набор формул для расчёта координат внутренних точек, требуемых для достижения точности, то есть ошибки на каждом шаге, порядка h4. Расчёты при использовании этого метода производятся по формуле:

,

где k0=hf(xi,yi), k1=hf(xi+h/2, yi+k0/2), k2=hf(xi+h/2, yi+k1/2), k3=hf(xi+h, yi+k2).

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

Пример 3. Приведём фрагмент программы для решения дифференциального уравнения из примера 1 методом Рунге-Кутта:

Program Runge;

Uses Crt;

Var

xn,xk,yn,h,k0,k1,k2,k3:real;

i,n:integer;

x,y:array [1..20] of real;

Function f(x,y:real):real;

begin

f:=2*x*x+2*y;

end;

Begin

ClrScr;

Writeln(' Решение дифференциального уравнения ');

Writeln(' dy/dx=2x^2+2y методом Рунге-Кутта ');

xn:=0; yn:=1; xk:=1; h:=0.1;

x[1]:=xn; y[1]:=yn; i:=1;

repeat

k0:=h*f(x[i],y[i]);

k1:=h*f(x[i]+h/2,y[i]+k0/2);

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

k3:=h*f(x[i]+h,y[i]+k2);

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

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

i:=i+1;

until x[i]>xk;

n:=i;

Writeln('----------------------');

Writeln('| № | x | y |');

Writeln('----------------------');

for i:= 1 to n do

Writeln('|', i:2, ' |', x[i]:5:2, ' |', y[i]:7:4, ' |');

Writeln('----------------------');

Readln;

End.

Задание

Дать сравнительную оценку результатов решения дифференциального уравнения из примера 1 y=2x2+2y при начальном условии y(0)=1; 0 x1 и h=0,1 обычным и модифицированным методами Эйлера и методом Рунге-Кутта. Для проверки использовать точное решение этого уравнения y=1,5e2x  x2  x  0,5. Составить программу, выполняющую вычисления с использованием массивов. Результаты расчёта представить в виде таблицы и вывести её на экран и принтер:

x

Метод Эйлера

Модифицированный метод Эйлера

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

Точное решение

0.0

1.0000

1.0000

1.0000

1.0000

0.1

1.2000

1.2210

1.2221

1.2221

0.2

1.4420

1.4948

1.4977

1.4977

0.3

1.7384

1.8375

1.8432

1.8432

0.4

2.1041

2.2685

2.2783

2.2783

0.5

2.5569

2.8118

2.8274

2.8274

0.6

3.1183

3.4964

3.5201

3.5202

0.7

3.8139

4.3578

4.3927

4.3928

0.8

4.6747

5.4393

5.4894

5.4895

0.9

5.7376

6.7938

6.8643

6.8645

1.0

7.0472

8.4856

8.5834

8.5836