25 lines
512 B
Text
25 lines
512 B
Text
PROGRAM RUNGE_KUTTA
|
|
|
|
CONST DELTA_T=0.1
|
|
|
|
FUNCTION Y1(T,Y)
|
|
Y1=T*SQR(Y)
|
|
END FUNCTION
|
|
|
|
BEGIN
|
|
Y=1.0
|
|
FOR I%=0 TO 100 DO
|
|
T=I%*DELTA_T
|
|
|
|
IF T=INT(T) THEN ! print every tenth
|
|
ACTUAL=((T^2+4)^2)/16 ! exact solution
|
|
PRINT("Y(";T;")=";Y;TAB(20);"Error=";ACTUAL-Y)
|
|
END IF
|
|
|
|
K1=Y1(T,Y)
|
|
K2=Y1(T+DELTA_T/2,Y+DELTA_T/2*K1)
|
|
K3=Y1(T+DELTA_T/2,Y+DELTA_T/2*K2)
|
|
K4=Y1(T+DELTA_T,Y+DELTA_T*K3)
|
|
Y+=DELTA_T*(K1+2*(K2+K3)+K4)/6
|
|
END FOR
|
|
END PROGRAM
|