0% found this document useful (0 votes)
83 views14 pages

Assignment PDF

This document contains an assignment on numerical analysis problems solved using Fortran. It includes problems on the modified Euler method, Runge-Kutta method, numerical integration using Simpson's rules, Trapezoidal rule, Weddle's rule, and solving a system of linear equations using Gauss-Seidel iteration and a tridiagonal system using the Thomas algorithm. Fortran programs are provided for each problem along with sample input and output.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
83 views14 pages

Assignment PDF

This document contains an assignment on numerical analysis problems solved using Fortran. It includes problems on the modified Euler method, Runge-Kutta method, numerical integration using Simpson's rules, Trapezoidal rule, Weddle's rule, and solving a system of linear equations using Gauss-Seidel iteration and a tridiagonal system using the Thomas algorithm. Fortran programs are provided for each problem along with sample input and output.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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__________

You might also like