y=f(x,y), y(a)=y0 - [a,b] h. y(x) :
Y [i+1]=y[1]+h/6(K[i]+2K[2]+2K[3]+K[4]), i=0,1,2,
K[1]=f(x[i],y[i]);
K[2]=f(x[i]+h/2, y[i]+h/2K[1]);
K[3]=f(x[i]+h/2, y[i]+h/2K[2]);
K[4]=f(x[i]+h, y+hK[3]).
Procedure RK4
Procedure der
(Enter = a, b, h1,k). y () h.
.
- :
1. - Intel 166.
2. 16, 8.
3. MS DOS.
4. ( )-1.
.
(floppy disk).
floppy disk .
, , Rkutt.exe
Turbo Pascal 7.0, -.
- . , , . , , - - .
- . . , . , , , , , , . , .
-. (a,b,h1,k) ( 1).
: y=f(x,y), y(a)=y0 - [a,b] h. y(x) :
|
|
Y [i+1]=y[1]+h/6(K[i]+2K[2]+2K[3]+K[4]), i=0,1,2,
K[1]=f(x[i],y[i]);
K[2]=f(x[i]+h/2, y[i]+h/2K[1]);
K[3]=f(x[i]+h/2, y[i]+h/2K[2]);
K[4]=f(x[i]+h, y+hK[3]).
Turbo Pascal . , , , , , .
1. .. ., , 1978
2. .. .. : ., 1987
3. .. .. ., , 1970
4. . ., , 1998
5. .. Turbo Pascal., , , .-., . 2003.
6. .. Turbo Pascal. . , . .., , 2003.
7. . . .-., 2001.
8. .. .. Turbo Pascal 7.0 .: - BHV, 1996 448 .: .
9. .. ., , 1987
10. .. ( 3- ). 2. Turbo Vision.-.: - - , 1993.
:
Borland Pascal Version 7.0 Copyright (c) 1983,92 Borland International
.
:
PROGRAM RKutt;
uses crt;
const
nmax=8;
type
vec=array[1..nmax] of Real;
var
h,a,b:Integer; i:Integer;
procedure der(x:Real; y:vec; var f:vec);
var
ki:array[1..5] of real;
begin
for i:=1 to 5 do
f[i]:=(h/6)*ki[i]+2*ki[2]+2*ki[3]+ki[4];
y[i+1]:=y[1]+h*y[i];
y[i]:=x*x+5;
end;
procedure RK4(n:Integer;x,h:Real; var y:vec);
var
i,j:Integer;
h1,h2,q:Real;
y0,y1,f:Vec;
begin
h1:=0;h2:=h1/2;
for i:=1 to n do begin
y0[i]:=y[i];
y1[i]:=y[i];
end;
for j:=1 to 4 do begin
der(x+h1,y,f);
if j=3 then h1:=h else h1:=h2;
for i:=1 to n do begin
q:=h1*f[i];
y[i]:=y0[i]+q;
y1[i]:=y1[i]+q/3;
end;
end;
for i:=1 to n do
y[i]:=y1[i];
end;
var
k,n:Integer;h1,y1:Real;
k1,k2,k3,k4:Integer;
x,ki:Array[1..5] of real;
y:Array[1..5] of real;
begin
writeln('Enter a=');
Readln(a);
writeln('Enter b=');
Readln(b);
writeln('Enter h1=');
Readln(h1);
writeln('Enter k=');
Readln(k);
n:=3;
h1:=a;
ki[1]:=k;
for i:=1 to n do begin
y[i+1]:=y1+(h1/6)*(Ki[i]+2*ki[2]+2*ki[3]+ki[4]);
writeln(y[i+1]);
end;
while h1<=b do begin
h1:=h1+h;
end;
Readln;
end.