Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 5

.docx
Скачиваний:
17
Добавлен:
04.04.2018
Размер:
137.9 Кб
Скачать

Задание:

Вариант

Метод

Нач.

условия

Шаг () или кол-во узлов (); конечное значение аргумента ()

Уравнение

Точность решения

3

Рунге-Кутта

___

Код:

var

Form7: TForm7;

k1,k2,k3,k4,y0,y,h,x,x0,xk:real;

f1:textfile;

implementation

{$R *.dfm}

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

begin

//xy'+2x*x-e^(-x)=0

f:=-2*x+1/x*exp(-x); //f=y' диф

//f:=x;

end;

Procedure proizv(var x,y:real; h:real);

var

k1,k2,k3,k4:real;

begin

k1:=f(x,y);

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

k3:=f(x+(h/2),y+k2*(h/2));

k4:=f(x+h,y+k3*h);

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

x:=x+h;

end;

Procedure TForm7.Button1Click(Sender: TObject);

Procedure graf(x,y:real);

begin

series1.addxy(x,y);

end;

begin

assignfile(f1,'F:\a.txt');

rewrite(f1);

//x0:=0; //на 0 не делится

//y0:=1;

//xk:=1;

x0:=1;

y0:=1;

xk:=2;

h:=0.1;

y:=y0;

x:=x0;

memo1.lines.add('x y');

writeln(f1,'x y');;

graf(x,y);

writeln(f1,floattostrF(x,ffFixed,5,6):8,' | ',floattostrF(y,ffFixed,5,6):8);

memo1.lines.add(floattostrF(x,ffFixed,1,6)+' | '+(floattostrF(y,ffFixed,1,6)));

while abs(xk-x)>0.001 do begin

proizv(x,y,h);

writeln(f1,floattostrF(x,ffFixed,5,6):8,' | ',floattostrF(y,ffFixed,5,6):8);

memo1.lines.add(floattostrF(x,ffFixed,5,6)+' | '+(floattostrF(y,ffFixed,5,6)));

graf(x,y);

end;

closefile(f1);

end;

end.

Результат:

Блок схема:

Начало

Ввод

Вывод

graf(x,y);

abs(xk-x)>0.001

proizv(x,y,h);

graf(x,y);

Вывод

Конец

Procedure proizv(var x,y:real; h:real);

Конец

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

f:=-2*x+1/x*exp(-x);

Конец

Procedure graf(x,y:real);

series1.addxy(x,y);

Конец

Соседние файлы в папке Лабы