Fortran Programs Sai
Fortran Programs Sai
Fortran Programs Sai
Contents
BISECTION ................................................................................................................................... 2
NEWTON RAPHSON METHOD .................................................................................................. 4
INTERPOLATION ......................................................................................................................... 5
MODIFIED EULER METHOD ...................................................................................................... 7
RUNGE KUTTA 4TH ORDER ........................................................................................................ 8
SIMPSON 1/3 ................................................................................................................................. 9
LEAST SQUARE FIT .................................................................................................................. 10
BINARY SEARCH....................................................................................................................... 11
BUBBLE SORT ........................................................................................................................... 12
GAUSS ELIMINATION .............................................................................................................. 13
BISECTION
!PROGRAM TO FIND THE ROOTS OF THE EQUATIONS USING BISECTION
METHOD!
PROGRAM BISECTION
IMPLICIT NONE
REAL, PARAMETER :: e=0.0001
INTEGER :: I
REAL :: a,b,Xm,f
WRITE(*,*)' ENTER THE VALUE OF LOWER AND UPPER LIMIT [a,b] OF THE
EQUATION'
READ(*,*) a,b
IF (f(a)*f(b)>0) THEN
WRITE(*,*)' INVALID INTERVAL'
STOP
ENDIF
WRITE(*,*)'_______________________________________________'
WRITE(*,*)'
I
a
b
Xm'
WRITE(*,*)'-----------------------------------------------------------------------'
I=0
do WHILE (abs(b-a)>e)
Xm = (a+b)*.5
IF(F(Xm)==0) GOTO 10
IF(f(a)*f(Xm)<0) THEN
b=Xm
ELSE
a=Xm
ENDIF
WRITE(*,*)I, a,b,Xm
I=I+1
ENDDO
10 WRITE(*,*)'ROOT OF THE GIVEN EQUATION IS=',Xm
WRITE(*,*)'------------------------------------------------------------------------'
STOP
END PROGRAM BISECTION
REAL FUNCTION f(X)
IMPLICIT NONE
REAL :: X
f =X**3-9*X+1
END FUNCTION f
OUTPUT
ENTER THE VALUE OF LOWER AND UPPER LIMIT [a,b] OF THE EQUATION
2
4
_______________________________________________
I
a
b
Xm
----------------------------------------------------------------------0 2.00000000
3.00000000
3.00000000
1 2.50000000
3.00000000
2.50000000
2 2.75000000
3.00000000
2.75000000
3 2.87500000
3.00000000
2.87500000
4 2.93750000
3.00000000
2.93750000
5 2.93750000
2.96875000
2.96875000
6 2.93750000
2.95312500
2.95312500
7 2.93750000
2.94531250
2.94531250
8 2.94140625
2.94531250
2.94140625
9 2.94140625
2.94335938
2.94335938
10 2.94238281
2.94335938
2.94238281
11 2.94238281
2.94287109
2.94287109
12 2.94262695
2.94287109
2.94262695
13 2.94274902
2.94287109
2.94274902
14 2.94281006
2.94287109
2.94281006
ROOT OF THE GIVEN EQUATION IS= 2.94281006
--------------------------------------------------------------------------
OUTPUT
INTERPOLATION
PROGRAM LAGRANGE_INTERPOLATION
IMPLICIT NONE
INTEGER,PARAMETER :: N=4
INTEGER :: I,J
REAL ::P,S
REAL,PARAMETER ::K=3.0
REAL,DIMENSION(20):: X(20),Y(20)
DATA (X(I), I=1,4)/3.2,2.7,1,4.8/
DATA (Y(I), I=1,4)/22,17.8,14.2,38.3/
S=0
DO I=1,N
P=1
DO J=1,N
IF (I==J) GOTO 5
P=P*(K-X(J))/(X(I)-X(J))
5 ENDDO
S=S+P*Y(I)
ENDDO
WRITE(*,*)'INTERPOLATION OF(',K,')=',S
END PROGRAM LAGRANGE_INTERPOLATION
OUTPUT
INTERPOLATION OF( 3.00000000
)= 20.2119598
DIFFERENTIATION
PROGRAM THREE_POINT_FORMULA_DIFFERENTIATION
IMPLICIT NONE
INTEGER, PARAMETER :: NN=20
REAL, DIMENSION(0:NN) :: x,fx
INTEGER :: I,N=4
REAL :: fp0,fp1,fp2,h=0.2
DO I=0,N
x(I)=I*h
fx(I)=(x(I))**4
WRITE(*,*)I,x(I),fx(I),4*((x(I))**3)
END DO
WRITE(*,*)'**************'
DO I=1,(N-1)
fp0=(1/(2*h))*(-3*fx(I-1)+4*fx(I)-fx(I+1))
fp1=(1/(2*h))*(-fx(I-1)+fx(I+1))
fp2=(1/(2*h))*(fx(I-1)-4*fx(I)+3*fx(I+1))
WRITE(*,*)I,fp0,fp1,fp2
END DO
END PROGRAM THREE_POINT_FORMULA_DIFFERENTIATION
output
0 0.00000000
0.00000000
0.00000000
1 0.200000003
1.60000008E-03 3.20000015E-02
2 0.400000006
2.56000012E-02 0.256000012
3 0.600000024
0.129600018
0.864000082
4 0.800000012
0.409600019
2.04800010
**************
1 -4.80000004E-02 6.40000030E-02 0.175999999
2 -8.00000355E-02 0.320000052
0.720000088
3 8.00001249E-02 0.960000038
1.83999991
output
0.00000000
1.00000000
0.100000001
0.121034168
0.144280523
0.169971704
0.198364839
0.229744121
0.109999992
0.132085875
0.156494543
0.183470294
0.213283092
0.246231347
6
0.110499993
0.132638454
0.157105252
0.184145212
0.214028999
0.247055694
0.121050000
0.144298017
0.169991046
0.198386222
0.229767755
0.264449686
1.11034167
1.24280512
1.39971697
1.58364844
1.79744124
2.04423594
SIMPSON 1/3
program simpson_123
implicit none
INTEGER, PARAMETER :: NN=20
REAL, DIMENSION(0:NN) :: fx
REAL :: a,b,h,sf
INTEGER :: I,m
m=10
a=0
b=1
IF ((m/2)*2/=m) THEN
WRITE(*,*)'number of intervals not even'
STOP
ENDIF
h=(b-a)/m
DO I=0,m
fx(I)=exp(-(a+I*h)*(a+I*h))
WRITE(*,*)I,fx(I)
END DO
sf=fx(0)+fx(m)
DO I=1,(m-1)
IF ((I/2)*2==I) THEN
sf=sf+2*fx(I)
ELSE
sf=sf+4*fx(I)
ENDIF
END DO
sf=sf*(h/3.)
WRITE(*,*)sf
end program simpson_123
output...
0 1.00000000
1 0.990049839
2 0.960789442
3 0.913931191
4 0.852143764
5 0.778800786
6 0.697676301
7 0.612626374
8 0.527292371
9 0.444858074
10 0.367879450
0.746824980
10
2.59999990
11
BINARY SEARCH
PROGRAM binary_search
IMPLICIT NONE
INTEGER, PARAMETER :: MM=20
INTEGER, DIMENSION(1:MM) :: AA
INTEGER :: N,I,J,x,iu,il,im
WRITE(*,*)'No of elements in the array'
READ(*,*) N
WRITE(*,*)'Type in the list'
DO I=1,N
READ(*,*)AA(I)
END DO
WRITE(*,*)'Search for'
READ(*,*)x
iu=1
il=N
im=(iu+il)/2
DO
IF (il<iu) THEN
WRITE(*,*)x,'not found in the list'
STOP
ENDIF
im=(iu+il)/2
IF (AA(im)==x) THEN
WRITE(*,*)x,'is found in the list at',im
STOP
ENDIF
IF (AA(im)>x) THEN
il=im-1
ELSE
iu=im+1
ENDIF
END DO
END PROGRAM binary_search
output...
No of elements in the array
5
Type in the list
2
6
8
15
9
Search for
8
8 is found in the list at
12
BUBBLE SORT
PROGRAM bubble_sort
IMPLICIT NONE
INTEGER, PARAMETER :: MM=20
INTEGER, DIMENSION(1:MM) :: AA
INTEGER :: N,I,J,K,x,y
WRITE(*,*)'type in the number of elements'
READ(*,*)N
WRITE(*,*)'read in the list to be sorted'
DO I=1,N
READ(*,*)AA(I)
END DO
DO I=1,N-1
K=I
DO J=I+1,N-1
IF (AA(J)>AA(K)) THEN
K=J
ENDIF
END DO
IF (K/=I) THEN
x=AA(I)
AA(I)=AA(K)
AA(K)=x
ENDIF
END DO
WRITE(*,*)(AA(I),I=1,N)
END PROGRAM bubble_sort
outpu..
type in the number of elements
5
read in the list to be sorted
12
4
9
54
0
54
12
9
4
13
GAUSS ELIMINATION
PROGRAM ELMN
IMPLICIT NONE
real,allocatable,dimension(:,:) :: a
real,allocatable,dimension(:) :: x
real :: temp1,temp2,sum
integer ::n,k,i,j
write(*,*) 'no. of eqn'
read (*,*) n
allocate (a(1:n,1:n+1))
allocate (x(1:n))
write(*,*)'enter coeff'
do i=1,n
read(*,*)(a(i,j),j=1,n+1)
enddo
do k=1,n-1
temp1= a(k,k)
if(temp1==0)then
write(*,*)' 0 division'
stop
do i= k+1,n
temp2= a(i,k)/temp1
do j=k ,n+1
a(i,j)=a(i,j)-temp2*(a(k,j))
enddo
enddo
endif
enddo
x(n) = a(n,n+1)/a(n,n)
do i=n-1,1,-1
sum=0.0
do j=i+1,n
sum= sum+a(i,j)*x(j)
enddo
x(i) = (a(i,n+1)-sum)/a(i,i)
end do
write(*,*)'soln'
do i=1,n
write(*,*)i,x(i)
enddo
END PROGRAM ELMN
output ..........................................................................
no. of eqn
3
enter coeff
10 -1 -2 4
1 10 -1 3
2 3 20 7
soln
1 0.503499985
2 0.335000008
3 0.349999994