Министерство образования и науки Российской Федерации. Федеральное государственное бюджетное учреждение высшего профессионального образования

Федеральное государственное бюджетное учреждение высшего профессионального образования

«Владимирский государственный университет имени Александра

Григорьевича и Николая Григорьевича Столетовых»

Кафедра КТ РЭС

Лабораторная работа №9

Выполнил: ст. гр. РЭ-111

Фамилия И.О.: Курбатов А.В.

Проверил: доц.

Г. Владимир 2011г.

1.Цель работы: решение на ЭВМ системы обыкновенных дифференциальных уравне-

ний методом Рунге-Кутта.

2.

3. procedure TForm1.Button1Click(Sender: TObject);

var k1,k2,k3,k4:extended;

t:integer;

begin

Form1.Button4.Click;

Memo1.Clear;

Memo2.Clear;

memo1.Enabled:=true;

memo2.Enabled:=true;

try

x1:=StrToFloat(Edit1.Text);

xc:=StrToFloat(Edit1.Text);

x2:=StrToFloat(Edit2.Text);

y:=StrToFloat(Edit3.Text);

yc:=StrToFloat(Edit3.Text);

h:=StrToFloat(Edit4.Text); //***********************************

f:=Calculate(Edit5.Text);

line_arr:=round(abs((x2-x1)/h))+1;

SetLength(zx, line_arr);

SetLength(zy, line_arr);

t:=0;

while x1<x2

do

begin

zx[t]:=x1;

zy[t]:=y;

k1:=h*f;

if (y+(k1/2))=0 then begin showmessage h'); break;

end;

k2:=h*((y+(k1/2))-(2*(x1+(h/2)))/(y+(k1/2)));

if (y+(k2/2))=0 then begin showmessage ('Деление на 0!'+#13+' Измените h'); break;

end;

k3:=h*((y+(k2/2))-(2*(x1+(h/2)))/(y+(k2/2)));

if (y+k3)=0 then begin showmessage ('Деление на 0!'+#13+' Измените h');break;

end;

k4:=h*(y+k3-2*(x1+(h/2)))/(y+k3);

x1:=x1+h;

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

t:=t+1;

Memo1.Lines.Add('x['+floattostr(t)+']='+floattostr(x1));

Memo2.Lines.Add('y['+floattostr(t)+']='+floattostr(y));

end;

Memo3.Lines.Add(''+floattostr(f));

except

on EConvertError do begin

MessageDlg('Некорректные значения переменных',mtError,[mbOk],0);

exit;

end;

end;

end;

4. Полученные результаты:

X   0.0000001 0.00000002 0.00000003 0.00000004 0.00000005 0.00000006 0.00000007 0.00000009
Y1 0.001 0.000995 0.0009801 0.0009556 0.0009216 0.0008786 0.0008271 0.0007675 0.0007007
Y2   -995.842 -1.977000 -2933000 -3855000 -4735000 -5563000 -6331000 -7032000


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: