Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лр4.docx
Скачиваний:
1
Добавлен:
14.09.2019
Размер:
193.73 Кб
Скачать

Until KeyPressed End.

Результаты работы программы:

Step = 0.1 Y_rez [75] = 0.02551

Step = 0.01 Y_rez [750] = 0.02601

Step = 0.005 Y_rez [1500] = 0.02602

Мы видим, что результаты сильно «приблизились» к эталонному (0,2605).

Исправленный метод Эйлера согласуется с разложением в ряд Тейлора вплоть до членов степени h2, являясь, т.о. методом Рунге - Кутта второго порядка.

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

В данном методе мы находим тангенс угла наклона касательной в точке:

Модифицированный метод Эйлера также согласуется с разложением в ряд Тейлора вплоть до членов степени h\ и также является методом Рунге - Кутта второго порядка.

Листинг и результаты работы программы для трех различных величин шагов:

{ ЛАБОРАТОРНАЯ РАБОТА № 4. "ЧИСЛЕННЫЕ МЕТОДЫ"

Программа № 3 : MODIFITSIROVANY METHOD EYLERA }

Program lab_4_3;

Uses Crt;

Const N_max = 5 000;

X_beg = 1 { переменная X - начальное условие };

Y_beg = 1 { переменная Y - начальное условие };

X_kon =8.5 { требуемое конечное значение аргумента };

h = 0.1; { (h=0.1,0.01,0.005) - величина шага }

Type Ar = array[0..N_max] of real;

Var X,Y : Ar;

i, n : word;

Function F (X, Y :real) : real;

Begin

F : = (2/(X*X*X)) - (3 *Y)/X;

End { F };

{ }

Function Fii (X, Y, h :real) : real;

Соотношения, описывающие модифицированный метод Эйлера имеют вид:

Var F_tool : real;

Begin

F_tOOl:=F(X,Y);

Fii := F (X+h/2, Y+<h/2)*F_tOOl); End { Fii };

While X[i] < X_kon do Begin

У [i + 1] :=Y[i]+h*Fii(X[i] ,Y[i] ,h) ; inc(i);

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

End;

Writeln(' 15,'Step = ',h:l:3);

Writeln (' ' :10, 'Y_re z ['Д,'] = ',Y[i] : 3 :7) ;

Repeat

Until KeyPressed

Результаты, последних двух методов почти не изменились при одинаковом значении шага /г. Но (было проверено экспериментально!) при уточнении чисел до миллиардных долей, результа- ты модифицированного метода Эйлера имеют большее приближение к эталонному.

  1. Метод Рунге - Кутта четвертого порядка.

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

Begin ClrScr;

X [0] := x_beg; Y[0] := Y_beg; i : = 0 ;

End.

Результаты работы программы: Step = 0.1

  • rez [75] = 0.0255086

Step = 0.01

  • rez [750] = 0.0260537

Step = 0.005

  • rez [1500] = 0.0260238

Ошибка приближения для этого метода равна ej = kh5. Заметим, что при использовании этого метода функцию необходимо вычислять четыре раза.

Ниже приведен текст программы, результаты расчета и оценка точности результатов, по- лученных но методу Рунгс - Кутта четвертого порядка для трех различных величин шагов.

{ ЛАБОРАТОРНАЯ РАБОТА № 4. "ЧИСЛЕННЫЕ МЕТОДЫ"

Программа № 4 : METHOD RUNGE - KUTTA IV }

Program lab_4_4;

Uses Crt;

Const N_max = 5000;

X_beg = 1 { переменная X - начальное условие };

Y_beg = 1 { переменная Y - начальное условие };

X_kon =8.5 { требуемое конечное значение аргумента };

h = 0.1; { (h=0.1,0.01,0.005) - величина шага }

Type Ar = array[0..N_max] of real;

Var X,Y : Ar;

i, n : word;

Function F (X, Y :real) : real;

Begin

F : = (2/ (X*X*X)) - (3*Y)/X;

End { F };

{ }

Function Fii (X, Y, h :real) : real;

Var kl, k2, k3, k4 : real;

Begin

kl:= F(X,Y);

k2 : = F(X+h/2, Y+(h/2)*kl); k3:= F(X+h/2, Y+(h/2)*k2); k4 : = F(x+h, Y+h*k3) ;

Fii := (h/6)*(kl+2*k2+2*k3+k4)

End { Fii } ;

{ J

Begin ClrScr;

X [0] := X_beg; Y[0] := Y_beg; i : = 0 ;

While X[i] < x_kon do Begin

Y[i+1] :=Y[i] + Fii(X[i],Y [i], h) ; inc (i) ;

X[i] := X[i-1]+h

End;

Writeln(1 15,'Step = ',h:1:3);

Writeln (' 1:10,'Y_rez [',i,'] = ',Y[i]:3:7);

Repeat

Until KeyPressed End.

Результаты работы программы: Step = 0.1 Y_rez [75] = 0.0254695

Step = 0.01 Y_rez [750] = 0.0260533

Step = 0.005 Y_rez [1500] = 0.0260237

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