Wednesday, March 17, 2010

Assignment 12 : RK Method of Order 2 & 4

      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

No comments:

Post a Comment