Автор: Пользователь скрыл имя, 28 Марта 2011 в 19:13, курсовая работа
Цель работы: составить программу для решения задачи Коши для системы дифференциальных уравнений методом Рунге-Кутта-Мерсона на примере, проверить полученное решение в MathCad и проанализировать результаты.
ВВЕДЕНИЕ……………………………………………………………….…………3
ГЛАВА I. РЕШЕНИЕ ЗАДАЧИ КОШИ ДЛЯ СИСТЕМ ДИФФЕРНЕЦИАЛЬНЫХ УРАВНЕНИЙ МЕТОДОМ РУНГЕ-КУТТА-МЕРСОНА…………………………………………………………………..………4
1. Постановка задачи Коши для систем обыкновенных дифференциальных уравнений………….……………..................…...4
2. Метод Рунге-Кутта-Мерсона………………………………………….5
1.3. Алгоритм решения задачи Коши для систем обыкновенных дифференциальных уравнений методом Рунге-Кутта-Мерсона……………….........................................................………..….7
ГЛАВА II. ВЫЧИСЛИТЕЛЬНЫЙ ЭКСПЕРЕМЕНТ………….………...…....8
2.1. Постановка задачи……………………………………………………..8
2.2. Анализ результатов……………………………………………….....…9
ЗАКЛЮЧЕНИЕ………………………………………………………………..….10СПИСОК ЛИТЕРАТУРЫ………...……………........................................ ..........11
ПРИЛОЖЕНИЕ.......................................................................................................12
Приложение 1........................................................................................12
Приложение 2........................................................................................16
procedure TForm1.Button1Click(Sender: TObject);
begin
h:=strtofloat(edit1.Text)
e1:=strtofloat(edit2.
x:=strtofloat(edit5.Text)
w[1]:=strtofloat(edit3.
w[2]:=strtofloat(edit4.
k2:=0;
e3:=0;
ur;
d2:=0;
for j:=1 to n do
begin
a[j]:=f[j]*H;
y[j]:=W[j]+a[j]/3;
end;
x:=x+h/3;
ur;
for j:=1 to n do
begin
y[j]:=W[j]+(a[j]+f[j]*H)/6;
end;
ur;
for j:=1 to n do
begin
c[j]:=f[j]*H;
y[j]:=W[j]+a[j]/8+0.375*c[j];
end;
x:=x+h/6;
ur;
for j:=1 to n do
begin
d[j]:=f[j]*H;
y[j]:=W[j]+a[j]/2-1.5*c[j]+2*
end;
x:=x+h/2;
ur;
for j:=1 to n do
begin
e[j]:=f[j]*H;
y[j]:=W[j]+(a[j]+4*d[j]+e[j])/
e2:=abs(-2*a[j]+9*c[j]-8*d[j]+
if e2<=e1 then
if e2<e1/20 then d2:=d2+1 else
e3:=0;
end;
if e3<>0 then begin
x:=x-h;
for j:=1 to n do begin
y[j]:=W[j];
end;
H:=H/2;
end
else k2:=1;
if d2=n then H:=H+H;
form2.Show;
form2.edit1.text:=
form2.edit2.text:=
end;
end.
Приложение
2