Wednesday, March 17, 2010

Assignment 13 : Adam - Bashforth 4 Step Explicit Method

      PROGRAM ABMET
      OPEN(1,'INPUT.DAT')
      OPEN(2,'OUTPUT.DAT')
      READ(1,*)A,B,N,Y0
      CALL ABM(A,B,N,Y0)
      END PROGRAM

      SUBROUTINE ABM(A,B,N,Y0)
      F(T,Y)=Y-T*T+1
      G(T)=(T+1)**2-0.5*EXP(T)
      REAL::T(0:N),W(0:N),K1,K2,K3,K4
      WRITE(2,*)'AB EXPLICIT METHOD:'
      WRITE(2,10)
  10  FORMAT(3X,'T',9X,'W',8X,'EXACT',5X,'ERROR')
      H=(B-A)/N
      T(0)=A
      W(0)=Y0
      WRITE(2,11)T(0),W(0),G(T(0)),ABS(W(0)-G(T(0)))
  11  FORMAT(2X,F4.2,2X,F9.6,2X,F9.6,2X,F9.6)
      DO I=0,2
      K1=H*F(T(I),W(I))
      K2=H*F(T(I)+0.5*H,W(I)+0.5*K1)
      K3=H*F(T(I)+0.5*H,W(I)+0.5*K2)
      K4=H*F(T(I)+H,W(I)+K3)
      W(I+1)=W(I)+(K1+2*K2+2*K3+K4)/6
      T(I+1)=A+(I+1)*H
      WRITE(2,11)T(I+1),W(I+1),G(T(I+1)),ABS(W(I+1)-G(T(I+1)))
      END DO
      DO I=3,N-1
      T(I+1)=A+(I+1)*H
      W(I+1)=W(I)+H*(55*F(T(I),W(I))-59*F(T(I-1),W(I-1))+37*F(T(I-2),W(I-2))-9*F(T(I-3),W(I-3)))/24
      WRITE(2,11)T(I+1),W(I+1),G(T(I+1)),ABS(W(I+1)-G(T(I+1)))
      END DO
      END SUBROUTINE

Input is same as RK and Euler Methods as the function, that is, initial value problem is the same. But A-B method produces more accurate approximations.

No comments:

Post a Comment