Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦ_ВЫЧ_МАТ_4,5.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.17 Mб
Скачать

Приложение Программа решения системы дифференциальных уравнений

Дана система из двух обыкновенных дифференциальных уравнений.

Для описания принципа построения программы ее решения приведем текст программы ее численного решения модифицированным методом Эйлера. Все другие методы, в частности, 4-го порядка отличаются только количеством обращений к процедуре расчета правых частей уравнений и формулами получения результатов (прогнозируемого и окончательного).

При переходе на другой метод в строке {Прогноз} записываются формулы вычисления всех прогнозируемых точек (по Адамсу-Башфорту или Рунге-Кутте), а в строках {Результат} – итоговая квадратурная формула для вычисления уi+1 с учетом полученного прогноза.

Текст программы

Uses Crt;

const k = 2; { Число уравнений }

type mX = array[1..k] of real;

var x, x0, xN, h : real;

y, f1, f2, yPR : mX;

j, i, N : integer;

procedure fun(x:real; y:mX; var f:mX); { Правые части системы }

begin f[1] := –y[2] + x*x;

f[2] := y[1] + exp(x);

end;

begin ClrScr; { Головная программа }

x0:= 0; xN:= 1; y[1]:= –0.5; y[2]:= –1.5; h:= 0.1;

N:= round( (xNx0) / h ); { Число точек решения}

x := x0;

writeln(x:10:5, y[1]:12:5, y[2]:10:5);

for i := 1 to N do

begin

fun(x, y, f1);

for j:=1 to k do yPR[j]:= y[j]+ h*f1[j]; { Прогноз }

{ Результат }

fun(x+h, yPR, f2);

for j:=1 to k do y[j]:=y[j]+0.5*h*(f1[j]+f2[j]);

x := x0 + i*h;

writeln(x:10:5,y[1]:12:5,y[2]:10:5);

readln;

end;

end.

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