C-----SHOOTING METHOD ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] IMPLICIT NONE REAL*8 Y0,Z0 REAL*8 Y1,Y2 REAL*8 Z1,Z2 REAL*8 DEL,DF INTEGER ITE DEL=1.0D-5 C-----INITIAL VALUE OF DERIVATION AT X=0.0 ]]]]]]]]]]]]]]]]]]]]]]]]]]]]] Z0 =0.0D00 C-----MODIFIED SECANT METHOD FOR Z0 VALUE ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] DO ITE=1,5 Z1=Z0 CALL RK4(Z1,Y1) Z2=Z0+DEL CALL RK4(Z2,Y2) DF=(Y2-Y1)/DEL Z0=Z0-Y1/DF WRITE(6,*) "ROOT_Z0=",Z0 END DO END C-----================================================================== SUBROUTINE RK4(Z0,Y0) C-----================================================================== C-----FOURTH-RUNGE RUNGE-KUTTA METHOD ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] IMPLICIT NONE REAL*8 KY(0:4),KZ(0:4),C(4) REAL*8 X0,Y0,Z0 REAL*8 X1,Y1,Z1 REAL*8 PI,DX INTEGER M,ITE,ITE_MAX ITE_MAX=1000 PI=4.0D00*ATAN(1.0D00) DX=PI/DBLE(ITE_MAX) C(1)=0.0D00 C(2)=0.5D00 C(3)=0.5D00 C(4)=1.0D00 C-----INITIAL VALUES ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] X0=0.0D00 Y0=1.0D0 C Z0=0.0D00 KY(:)=0.0D00 KZ(:)=0.0D00 C-----FOURTH-ORDER RUNGE-KUTTA METHOD ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] DO ITE=1,ITE_MAX C WRITE(6,*) "ITERATION NUMBER=",ITE DO M=1,4 X1 = X0+C(M)*DX Y1 = Y0+C(M)*DX*KY(M-1) Z1 = Z0+C(M)*DX*KZ(M-1) KY(M)= Z1 KZ(M)=-3.0D00*X1*Z1-7.0D00*Y1+COS(2.0D00*X1) END DO X0 = X0 + DX Y0 = Y0 + (KY(1)+2D00*KY(2)+2D00*KY(3)+KY(4))/6D00 *DX Z0 = Z0 + (KZ(1)+2D00*KZ(2)+2D00*KZ(3)+KZ(4))/6D00 *DX WRITE(10,10) X0,Y0,Z0 END DO WRITE(6 ,11) "X=",X0,"Y=",Y0,"Z=",Z0 10 FORMAT(F12.6,2X,F12.6,2X,F12.6,2X,F12.6) 11 FORMAT(A2,2X,F10.6,2X,A2,2X,F10.6,2X,A2,2X,F10.6,2X) RETURN END