Sie sind auf Seite 1von 14

An assignment on

Numerical Analysis
By MD. Fahim Sahariar Alam (MAT-2011133015)

abir
12/14/2016

Numerical Problems using Fortran

___________________________

IVP
( )

Problem:
(
Solution:
!

PROGRAM FOR MODIFIED EULER METHOD


IMPLICIT NONE
REAL F
REAL X0 , Y0 , H , Y , XN , X1 , I , X2
PRINT * , 'INITIAL X0: '
READ * , X0
PRINT * , 'INITIAL Y0: '
READ * , Y0
PRINT * , 'H: '
READ * , H
PRINT * , 'TERMINAL XN: '
READ * , XN
Y = Y0 + H*F(X0,Y0)
X1 = X0 + H
X2 = X1
PRINT * , X0 , Y
DO I = X1 , XN , H
Y = Y0 + (H*F(X0,Y0)+H*F(X1,Y))/2
PRINT * , X2 , Y
ENDDO
END
REAL FUNCTION F(X,Y)
IMPLICIT NONE
REAL X , Y
F = 1+X*Y
END
OUTPUT:

Numerical Problems using Fortran

( )

Problem: Given
(

Solution

!
!

!
!

PROGRAM R_K_M
IMPLICIT NONE
REAL F
INTEGER I, N
REAL X (0:100), H, Y (0:100), X0, X1, K (4)
OPEN (UNIT=1, FILE='RKM.DAT')
WRITE (1,*) "SOLV FOR -> DY/DX=1/(X+Y)"
PRINT *, "INPUT START AND END POINT OF X:
READ *, X0, X1
X0=0.5
X1=2
PRINT *, "INPUT H"
READ *, H
H=.5
N = (X1-X0)/H
PRINT *, "INPUT X0 AND Y0 :"
READ * , X(0) , Y(0)
X(0)=0
Y(0)=1
DO I = 1 , N
X(I) = X(I-1) + H
ENDDO
WRITE (1,*) X0 , "<=X<=" , X1 , " H = " , H
DO I = 0 , N - 1 , 1
PRINT * , "WHILE FINDING Y" , I + 1
K(1) = H*F(X(I),Y(I))
PRINT * , "K1 = " , K(1)
WRITE (1,*) "K1 =" , K(1)
K(2) = H*F(X(I)+H/2,Y(I)+K(1)/2)
PRINT * , "K2 = " , K(2)
WRITE (1,*) "K2 =" , K(2)
K(3) = H*F(X(I)+H/2,Y(I)+K(2)/2)
PRINT * , "K3 = " , K(3)
WRITE (1,*) "K3 =" , K(3)
K(4) = H*F(X(I)+H,Y(I)+K(3))
PRINT * , "K4 = " , K(4)
WRITE (1,*) "K4 =" , K(4)
Y(I+1) = Y(I) + (K(1)+2*K(2)+2*K(3)+K(4))/6

Numerical Problems using Fortran


WRITE (1,*) "Y" , I + 1 , " = " , Y(I+1)
PRINT * , ""
ENDDO
DO I = 0 , N
PRINT * , "Y(" , X(I) , ") =" , Y(I)
WRITE (1,*) "Y(" , X(I) , ") =" , Y(I)
ENDDO
END
FUNCTION F(X,Y)
IMPLICIT NONE
REAL F , X , Y
F = 1/(X+Y)
END

Output

Numerical Problems using Fortran


___________________________________________________________________NuMerical IntegratioN

Problem

( )

( )
( )

(a)
Solution
!

10

simpsons 1/3 rule


REAL FUNCTION F(X)
REAL X
F=1.0/(1.0+X**2)
RETURN
END
INTEGER N,K
REAL X,I,F1,F2,F3,SUM
EXTERNAL F
PRINT*,'LOWER LIMIT OF X'
READ(5,*)A
PRINT*,'UPPER LIMIT OF X'
READ(5,*)B
PRINT*,'ENTER NUMBER OF SEGMENTS(EVEN NO.)'
READ(5,*)N
H=(B-A)/FLOAT(N)
M=N/2
SUM=0.0
X=A
F1=F(X)
DO 5 K=1,M
F2=F(X+H)
F3=F(X+2.0*H)
SUM = SUM+F1+4*F2+F3
F1=F3
X=X+2.0*H
CONTINUE
I=SUM*H/3.0
WRITE(6,10)I
FORMAT(3X,'VALUE=',F12.5)
END

( )

Numerical Problems using Fortran

Output

(b)
Solution
!

10

simpsons 3/8 rule


REAL FUNCTION F(X)
REAL X
F=1.0/(1.0+X**2)
RETURN
END
INTEGER N,K
REAL I,X,A,B,SUM
EXTERNAL F
PRINT*,'LOWER LIMIT OF X'
READ(5,*)A
PRINT*,'UPPER LIMIT OF X'
READ(5,*)B
PRINT*,'ENTER NUMBER OF SEGMENTS(MULTIPLE OF 3)'
READ(5,*)N
H=(B-A)/FLOAT(N)
SUM=F(A)+F(B)
X=A
DO 5 K=1,N-1
IF(K.EQ.((K/3)*3)) THEN
SUM=SUM+2.0*F(X+FLOAT(K)*H)
ELSE
SUM=SUM+3.0*F(X+FLOAT(K)*H)
END IF
CONTINUE
I=SUM*3.0*H/8.0
WRITE(6,10)I
FORMAT(3X,'VALUE=',F12.5)

Numerical Problems using Fortran


END

Output:

(c)
Solution:
!

10

trapezoidal rule
REAL FUNCTION F(X)
REAL X
F=1.0/(1.0+X**2)
RETURN
END
INTEGER N,K
REAL A,B,H,SUM,I,F
EXTERNAL F
PRINT*,'LOWER LIMIT OF X'
READ(5,*)A
PRINT*,'UPPER LIMIT OF X'
READ(5,*)B
PRINT*,'ENTER NUMBER OF SEGMENTS'
READ(5,*)N
H=(B-A)/FLOAT(N)
SUM=(F(A)+F(B))/2.0
DO 5 K=1,N-1
SUM=SUM+F(A+FLOAT(K)*H)
CONTINUE
I=H*SUM
WRITE(6,10)I
FORMAT('VALUE=',F12.5)
END

Numerical Problems using Fortran

Output:

(d)
Solution:
!

10
20
30

40
50

weddles rule
REAL FUNCTION F(X)
REAL X
F=1.0/(1.0+X**2)
RETURN
END
REAL I
PRINT*,'LOWER LIMIT OF X'
READ(5,*)A
PRINT*,'UPPER LIMIT OF X'
READ(5,*)B
PRINT*,'ENTER NUMBER OF SEGMENTS(6 OR 12)'
READ(5,*)N
H=(B-A)/FLOAT(N)
SUM=F(A)+F(B)
X=A
DO 5 K=1,N-1
IF(N.EQ.6) THEN
GOTO(10,20,30,20,10),K
SUM=SUM+5.0*F(X+FLOAT(K)*H)
GOTO 5
SUM=SUM+F(X+FLOAT(K)*H)
GOTO 5
SUM=SUM+6.0*F(X*FLOAT(K)*H)
ELSE
GOTO(40,50,60,50,40,70,40,50,60,50,40),K
SUM=SUM+5.0*F(X+FLOAT(K)*H)
GOTO 5
SUM=SUM+F(X+FLOAT(K)*H)
GOTO 5

Numerical Problems using Fortran


60
70
5

80

SUM=SUM+6.0*F(X+FLOAT(K)*H)
GOTO 5
SUM=SUM+2.0*F(X+FLOAT(K)*H)
ENDIF
CONTINUE
I=3.0*SUM*H/10.0
WRITE(6,80)I
FORMAT(3X,'VALUE=',F12.5)
END

Output:

Numerical Problems using Fortran


____________________________________________________________System of linear equations

Problem: Solve the following system if equations using Gauss-seidel iterative


method

Solution:
!

6
15

7
8

13

12
4
14

PROGRAM FOR GAUSS SEIDAL ITERATION METHOD


DIMENSION X(10),Y(10),A(10,10)
WRITE(*,*)'ENTER THE VALUE FOR N: '
READ(*,1) N
FORMAT(I5)
WRITE(*,*)'ENTER THE COEFFICIENT AND RHS: '
DO 5 I=1,N
READ*,(A(I,J),J=1,N+1)
CONTINUE
DO 6 I=1,N
X(I)=0.0
Y(I)=0.0
CONTINUE
ITERATION=0
ITERATION=ITERATION+1
DO 8 I=1,N
X(I)=A(I,N+1)
DO 7 J=1,N
IF(I.EQ.J) GOTO 7
X(I)=X(I)-A(I,J)*X(J)
CONTINUE
X(I)=X(I)/A(I,I)
CONTINUE
DO 12 K=1,N
IF(ABS (X(K)-Y(K)).GT..0005) THEN
WRITE(*,4) ITERATION
DO 13 I=1,N
Y(I)=X(I)
WRITE(*,14) I,X(I)
CONTINUE
GOTO 15
ENDIF
CONTINUE
FORMAT(3X,'ITERATION: ',I3)
FORMAT(3X,'X(',I6,'):',F15.5)
STOP
END

Numerical Problems using Fortran

Output:

Numerical Problems using Fortran

Problem: Solve the triadiagonal system

Solution
PROGRAM TDM
IMPLICIT NONE
INTEGER m
REAL arr(100,100) , a , b , c , d , s(100) , alp(100) , rslt(100)
INTEGER i , j
OPEN (UNIT=1,FILE='TDM.DAT')
PRINT * , "INPUT NUMBER OF UNKNOWNS ?"
READ * , m
PRINT * , "THERE 'A1' AND 'Cn' ARE 0"
PRINT * , "INPUT CO-EFFICIENTS & CONSTANTS RESPECTIVELY : "
!X
ARR(1,1)=0
!
ARR(1,2)=1.05
!
ARR(1,3)=.-1
!
ARR(1,4)=.9
!
ARR(2,1)=-1
!
ARR(2,2)=4
!
ARR(2,3)=-1
!
ARR(2,4)=2
!
ARR(3,1)=-1
!
ARR(3,2)=4
!
ARR(3,3)=-1
!
ARR(3,4)=2
!
ARR(4,1)=-1.0
!
ARR(4,2)=4
!X
ARR(4,3)=-1
!
ARR(4,4)=2
!
ARR(5,1)=-1
!
ARR(5,2)=4
!
ARR(5,3)=-1
!
ARR(5,4)=2
!
ARR(6,1)=-1
!
ARR(6,2)=2
!
ARR(6,3)=0

Numerical Problems using Fortran


!

ARR(6,4)=1.0
arr(1,1) = 0
arr(m,3) = 0
DO i = 1 , m , 1
PRINT * , "FOR EQUATION " , i
DO j = 1 , 4 , 1
IF ( .NOT.(i.EQ.1 .AND. j.EQ.1 .OR. i.EQ.m .AND. j.EQ.3) ) &
& READ * , arr(i,j)
ENDDO
ENDDO
!
DO 91 I=1,M,1
!
PRINT*,(ARR(I,J),J=1,N,1)
! 91 CONTINUE
DO i = 1 , m , 1
IF ( i.EQ.1 ) THEN
s(i) = arr(i,4)
alp(i) = arr(i,2)
WRITE (1,*) "ALPHA" , i , "= " , alp(i) , "; S" , i ,
&
& "= " , s(i)
PRINT * , "ALPHA" , i , "= " , alp(i) , "; S" , i , "= " ,&
& s(i)
ELSE
a = arr(i,1)
b = arr(i,2)
c = arr(i-1,3)
d = arr(i,4)
s(i) = d - (a*s(i-1)/alp(i-1))
alp(i) = b - (a*c/alp(i-1))
WRITE (1,*) "ALPHA" , i , "= " , alp(i) , "; S" , i ,
&
& "= " , s(i)
PRINT * , "ALPHA" , i , "= " , alp(i) , "; S" , i , "= " ,&
& s(i)
ENDIF
ENDDO
DO i = m , 1 , -1
IF ( i.EQ.m ) THEN
rslt(m) = s(i)/alp(i)
WRITE (1,*) "RSLT" , i , " = " , rslt(i)
PRINT * , "RSLT" , i , " = " , rslt(i)
ELSE
rslt(i) = (s(i)-arr(i,3)*rslt(i+1))/alp(i)
WRITE (1,*) "RSLT, i , " = " , rslt(i)
PRINT *, "RSLT, i, " = , rslt(i)
ENDIF
ENDDO

Numerical Problems using Fortran

!
!
!
!

PRINT*, .5*RSLT (1) +.25*RSLT (2)," ",


1.35*RSLT (1) +.8*RSLT (2) +.4*RSLT (3)," ",
2.25*RSLT (2) +1*RSLT (3) +.5*RSLT (4)," ",
3RSLT (3)*1-2*RSLT (4)
END

Output:

________The End__________

Das könnte Ihnen auch gefallen