CLS PRINT PRINT "RUNGE-KUTTA METH0D FOR A " PRINT "SYSTEM OF EQUATIONS" PRINT PRINT REM ==INPUT DATA== PRINT PRINT "ENTER LIMITS OF INTEGRATION" PRINT INPUT "A = ";A PRINT INPUT "B = ";B PRINT INPUT "YA = ";Y0 PRINT PRINT "INITIAL STEPSIZE " INPUT "H = ";H0 PRINT PRINT "LOCAL ERROR TOLERANCE X AS IN 1E-X" INPUT "X = ";E1 E1 = 1/10^E1 PRINT PRINT "STEPSIZE CONTROL (Y/N) "; INPUT C$ PRINT PRINT "SOLUTION" PRINT "********" PRINT REM ==INITIALIZE VARIABLES== X0 = A H = H0 E5 = E1 / 100 REM ==OUTPUT RESULTS== [FOONZE] PRINT PRINT "X = ";X0;" Y = ";Y0 GOSUB [FOEIZE] REM ==CHECKFOR END OFINTERVAL== IF X0 <= B THEN [FOONZE] PRINT PRINT "END OF EXECUTION" GOTO [ONZEZEZE] REM ==INTERGRATION ROUTINE== REM ==NEXT POINT W/CURRENT STEP SIZE== [FOEIZE] U = X0 W = Y0 T = H GOSUB [EIZEZE] Q1 = W T2 = H REM==NEXTPOINT W/ HALF STEP SIZE== [FIFOZE] U = X0 W = Y0 T = T2 / 2 FOR I = 1 TO 2 GOSUB [EIZEZE] Z(I) = W NEXT I Q2 = Z(2) REM ==CHECK FOR CONVERGENCE== Q3 = (Q2 -Q1) / 15 D = ABS(Q3)/ T2 IF D < E1 THEN [SEFOZE] REM ==OUT OF TOLERANCE== IF C$= "Y"THEN [SEONZE] REM ==ABORT EXECUTION== PRINT PRINT "** ERROR **CONVERGENCY NOT" PRINT "ATTAINED WITHIN TOLERANCE" PRINT "FOR STEP SIZE H=";H;" AT X=";X0 PRINT "TRY AGAIN USING STEPSIZE CONTROL" GOTO [ONZEZEZE] PRINT REM ==CONVERGENCE NOT ATTAINED-HALF STEP SIZE== [SEONZE] Q1 = Z(1) T2 = T2 / 2 REM ==ITERATE AGAIN== GOTO [FIFOZE] REM ==CONVERGENCE ATTAINED== REM ==RICHARDSON EXTRAPOLATION== [SEFOZE] Y0 = Q2 + Q3 X0 = X0 + T2 IF C$ = "N" THEN [EIZEZE] REM ==DOUBLE STEP SIZE IF TOO SMALL== IF D > E5 THEN [EIZEZE] H = 2 * H RETURN [EIZEZE] X = U REM ==4TH ORDER RUNGE-KUTTA= Y = W K1 = FNF(X,Y) K1 = T * K1 X = U + T / 2 Y = W + K1 / 2 K2 =FNF(X,Y) K2 = T * K2 Y = W + K2 / 2 K3= FNF(X,Y) K3 = T * K3 X = U + T Y = W + K3 K4 = FNF(X,Y) K4 = T * K4 V1 = K1 + 2 * K2 + 2 * K3 + K4 W = W + V1 / 6 U = X RETURN REM ************ PLACE FUNCTION HERE ********** FUNCTION FNF(X,Y) FNF=X+Y END FUNCTION [ONZEZEZE] END