|
Var
x0,y0,a1,a2,x,y,xk,k1,k2,k3,k4:real;
h,polh,rez,r,eps,n:real;
my: array[1..2] of real;
k,i: byte;
f: file of real;
function fn(x1,x2:real):real;
var absx2, expx3:real;
Begin
fn:=a1*x1+a2*x2*x2;
End;
Begin
ClrScr;
writeln('введи x0,y0,h,xk,eps');
Readln(x0,y0,h,xk,eps);
writeln(' x0=',x0:6:2,' y0=',y0:6:2,' h=',h:6:2,
' xk=',xk:6:2, ' eps=',eps:7:4);
writeln('введите a1, a2');
Read(a1,a2);
writeln('a1=',a1:4:2, ' a2=',a2:4:2);
x:=x0; y:=y0;
Repeat
for i:=1 to 2 do
begin{for}
if i=1 then writeln('i=',i:4,' h=',h:6:3)
else writeln('i=',i:4,' h/2=',h:6:3);
Repeat
k1:=h*fn(x,y);
x:=x+0.5*h;
y:=y0+0.5*k1;
k2:=h*fn(x,y);
y:=y0+0.5*k2;
k3:=h*fn(x,y);
x:=x+0.5*h;
y:=y0 + k3;
k4:=h*fn(x,y);
y:=y0+1/6*(k1+2*k2+2*k3+k4);
my[i]:=y;
writeln(x:9:5, y:9:5, k1:9:5, k2:9:5, k3:9:5, k4:9:5);
if x<=xk then y0:=y;
until x > xk;
if i=1 then
Begin
h:=h/2; x:=x0; y:=y0; readln
End;
if i=2 then
Begin
r:=abs(my[2] - my[1])/15;
writeln(' h/2=',h:6:3);
writeln(' my[1]=',my[1]:10:6,' my[2]=',my[2]:10:6,
' Погрешность по Рунге =',R:10:8);
Readln;
End;
end;{for}
until r<eps;
polh:=h;
h:=h*2;
writeln('h=',h:6:3,' h/2=',polh:6:3);
writeln(' my[1]=',my[1]:10:6,' my[2]=',my[2]:10:6,
' Погрешность по Рунге =',R:10:8);
x:=x0;
y:=y0;
writeln('-----------------------------------------------------------');
writeln(' x ',' y ','k1 ','k2 ','k3 ','k4 '
writeln('-----------------------------------------------------------');
Repeat
k1:=h*fn(x,y);
x:=x+0.5*h;
y:=y0+0.5*k1;
k2:=h*fn(x,y);
y:=y0+0.5*k2;
k3:=h*fn(x,y);
x:=x+0.5*h;
y:=y0+0.5*k3;
k4:=h*fn(x,y);
y:=y0+1/6*(k1+2*k2+2*k3+k4);
writeln(x:9:5,y:9:5,k1:9:5,k2:9:5,k3:9:5,k4:9:5);
{readln;}
if x<=xk then y0:=y;
until x>xk;
Readkey
End.
Варианты индивидуальных заданий
Дата добавления: 2015-07-11; просмотров: 90 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Program Runge_K2; | | | Программа на С |