PROGRAM RKMETS
OPEN(1,'INPUT.DAT')
OPEN(2,'OUTPUT.DAT')
READ(1,*)A,B,N,Y0
CALL RK2(A,B,N,Y0)
CALL RK4(A,B,N,Y0)
END PROGRAM
SUBROUTINE RK2(A,B,N,Y0)
F(T,Y)=Y-T*T+1
G(T)=(T+1)**2-0.5*EXP(T)
REAL::K1,K2
WRITE(2,*)'R-K METHOD OF ORDER 2:'
WRITE(2,10)
10 FORMAT(4X,"T"98X,"W",8X,'EXACT',5X,'ERROR')
H=(B-A)/N
T=A
Y=Y0
WRITE(2,11)T,Y,G(T),ABS(Y-G(T))
11 FORMAT(2X,F4.2,2X,F9.6,2X,F9.6,2X,F9.6)
DO I=1,N
K1=H*F(T,Y)
K2=H*F(T+H,Y+K1)
Y=Y+(K1+K2)/2
T=A+I*H
WRITE(2,11)T,Y,G(T),ABS(Y-G(T))
END DO
END SUBROUTINE
SUBROUTINE RK4(A,B,N,Y0)
F(T,Y)=Y-T*T+1
G(T)=(T+1)**2-0.5*EXP(T)
REAL::K1,K2,K3,K4
WRITE(2,*)'R-K METHOD OF ORDER 4:'
WRITE(2,10)
10 FORMAT(4X,"T"98X,"W",8X,'EXACT',5X,'ERROR')
H=(B-A)/N
T=A
Y=Y0
WRITE(2,11)T,Y,G(T),ABS(Y-G(T))
11 FORMAT(2X,F4.2,2X,F9.6,2X,F9.6,2X,F9.6)
DO I=1,N
K1=H*F(T,Y)
K2=H*F(T+0.5*H,Y+0.5*K1)
K3=H*F(T+0.5*H,Y+0.5*K2)
K4=H*F(T+H,Y+K3)
Y=Y+(K1+2*K2+2*K3+K4)/6
T=A+I*H
WRITE(2,11)T,Y,G(T),ABS(Y-G(T))
END DO
END SUBROUTINE
Wednesday, March 17, 2010
Subscribe to:
Post Comments (Atom)


No comments:
Post a Comment