Fortran Programs Sai
-
Upload
sairajdream -
Category
Documents
-
view
220 -
download
0
Transcript of Fortran Programs Sai
-
7/25/2019 Fortran Programs Sai
1/13
1
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
-
7/25/2019 Fortran Programs Sai
2/13
2
BISECTION
!PROGRAM TO FIND THE ROOTS OF THE EQUATIONS USING BISECTIONMETHOD!
PROGRAM BISECTION
IMPLICIT NONEREAL, PARAMETER :: e=0.0001INTEGER :: 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
ENDIFWRITE(*,*)'_______________________________________________'
WRITE(*,*)' I a b Xm'WRITE(*,*)'-----------------------------------------------------------------------'
I=0
do WHILE (abs(b-a)>e)
Xm = (a+b)*.5IF(F(Xm)==0) GOTO 10
IF(f(a)*f(Xm)
-
7/25/2019 Fortran Programs Sai
3/13
3
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.000000001 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.937500005 2.93750000 2.96875000 2.96875000
6 2.93750000 2.95312500 2.95312500
7 2.93750000 2.94531250 2.945312508 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.9428710912 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
--------------------------------------------------------------------------
-
7/25/2019 Fortran Programs Sai
4/13
4
NEWTON RAPHSON METHOD
!PROGRAM TO FIND THE ROOT USING NEWTON RAPHSON METHODPROGRAM NR
IMPLICIT NONE
REAL :: x,xo,fx,dfxREAL, PARAMETER:: tol=1e-6integer :: k
WRITE(*,*)'ENTER THE INITIAL VALUE XO'
READ(*,*) xo
WRITE(*,*)'____________________________'WRITE(*,*)'__________I_______XO________'
k=0
10 k=k+1call fun (xo,fx,dfx)
x=xo-fx/dfxif(abs(x-xo)
-
7/25/2019 Fortran Programs Sai
5/13
5
INTERPOLATION
PROGRAM LAGRANGE_INTERPOLATIONIMPLICIT NONE
INTEGER,PARAMETER :: N=4
INTEGER :: I,JREAL ::P,SREAL,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=1DO J=1,N
IF (I==J) GOTO 5P=P*(K-X(J))/(X(I)-X(J))
5 ENDDOS=S+P*Y(I)
ENDDO
WRITE(*,*)'INTERPOLATION OF(',K,')=',S
END PROGRAM LAGRANGE_INTERPOLATION
OUTPUT
INTERPOLATION OF( 3.00000000 )= 20.2119598
-
7/25/2019 Fortran Programs Sai
6/13
6
DIFFERENTIATION
PROGRAM THREE_POINT_FORMULA_DIFFERENTIATION
IMPLICIT NONEINTEGER, PARAMETER :: NN=20
REAL, DIMENSION(0:NN) :: x,fxINTEGER :: I,N=4
REAL :: fp0,fp1,fp2,h=0.2DO 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,fp2END DO
END PROGRAM THREE_POINT_FORMULA_DIFFERENTIATION
output
0 0.00000000 0.00000000 0.00000000
1 0.200000003 1.60000008E-03 3.20000015E-022 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.7200000883 8.00001249E-02 0.960000038 1.83999991
-
7/25/2019 Fortran Programs Sai
7/13
7
MODIFIED EULER METHOD
! to find the value of ode by modified euler method
PROGRAM PCM
IMPLICIT NONEINTEGER, PARAMETER :: MM=10
INTEGER :: n,I
REAL, DIMENSION(0:MM) :: xn=0,yn=0
REAL :: yp,h=0.1,k1,k2,py
WRITE(*,*)'ENTER THE VALUE OF N'
READ(*,*)n
DO I=1,n
xn(I)=xn(I-1)+h
END DO
WRITE(*,*)'__________n_________xn____________yn_________'WRITE(*,*)0,xn(0),yn(0)
DO I=1,nk1=h*yp(xn(I-1),yn(I-1))
py=yn(I-1)+k1
k2=h*yp(xn(I),py)
yn(I)=yn(I-1)+0.5*(k1+k2)
WRITE(*,*)I,xn(I),yn(I)
END DO
WRITE(*,*)'_____________________________________________'
END PROGRAM PCM
REAL FUNCTION yp(xn,yn)
IMPLICIT NONEREAL :: xn,yn
yp=1-yn
RETURN
END FUNCTION yp
output
ENTER THE VALUE OF N
3__________n_________xn____________yn_________
0 0.00000000 0.000000001 0.100000001 9.49999988E-022 0.200000003 0.180974990
3 0.300000012 0.258782357_____________________________________________
-
7/25/2019 Fortran Programs Sai
8/13
8
RUNGE KUTTA 4THORDER
PROGRAM RUNGE_KUTTA_Fourth_Order
IMPLICIT NONE
INTEGER, PARAMETER :: NN=20INTEGER :: I,n
REAL, DIMENSION(0:NN) :: x,y
REAL :: h,fx,k1,k2,k3,k4
h=0.1
x(0)=0
y(0)=1
WRITE(*,*)x(0),y(0)
READ(*,*)n
DO I=1,n
k1=h*fx(x(I-1),y(I-1))k2=h*fx(x(I-1)+0.5*h,y(I-1)+0.5*k1)
k3=h*fx(x(I-1)+0.5*h,y(I-1)+0.5*k2)k4=h*fx(x(I-1)+h,y(I-1)+k3)
x(I)=x(I-1)+h
y(I)=y(I-1)+(1/6.)*(k1+2*k2+2*k3+k4)
WRITE(*,*)k1,k2,k3,k4,y(I)
END DO
STOP
END PROGRAM RUNGE_KUTTA_Fourth_Order
REAL FUNCTION fx(x,y)IMPLICIT NONE
REAL :: x,y
fx=x+yRETURN
END FUNCTION fx
output
0.00000000 1.000000006
0.100000001 0.109999992 0.110499993 0.121050000 1.110341670.121034168 0.132085875 0.132638454 0.144298017 1.24280512
0.144280523 0.156494543 0.157105252 0.169991046 1.399716970.169971704 0.183470294 0.184145212 0.198386222 1.583648440.198364839 0.213283092 0.214028999 0.229767755 1.79744124
0.229744121 0.246231347 0.247055694 0.264449686 2.04423594
-
7/25/2019 Fortran Programs Sai
9/13
9
SIMPSON 1/3
program simpson_123
implicit noneINTEGER, 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'
STOPENDIF
h=(b-a)/mDO 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)
ENDIFEND DO
sf=sf*(h/3.)
WRITE(*,*)sf
end program simpson_123
output...
0 1.00000000
1 0.9900498392 0.960789442
3 0.9139311914 0.8521437645 0.778800786
6 0.6976763017 0.612626374
8 0.527292371
9 0.444858074
10 0.367879450
0.746824980
-
7/25/2019 Fortran Programs Sai
10/13
10
LEAST SQUARE FIT
!PROGRAM FOR LEAST SQUARE FIT
PROGRAM LEAST
IMPLICIT NONEINTEGER :: I,N
INTEGER,PARAMETER :: NOP=20
REAL :: SX=0,SY=0,SX2=0,SY2=0,SXY=0
REAL :: M,C,rn
REAL, DIMENSION(NOP) :: X,Y
OPEN(UNIT=1,FILE='LEAST',STATUS='OLD',ACTION='READ')
READ(1,*)N
rn= REAL(N)
DO I=1,N
READ(1,*)X(I),Y(I)SX=SX+X(I)
SY=SY+Y(I)SX2=SX2+X(I)*X(I)
SY2=SY2+Y(I)*Y(I)
SXY=SXY+X(I)*Y(I)
ENDDO
M=((SXY)-SX*(SY/rn))/((SX2)-SX*(SX/rn))
C=(SY/rn)-M*(SX/rn)
WRITE(*,*) M,C
END PROGRAM LEAST
output
0.699999988 2.59999990
-
7/25/2019 Fortran Programs Sai
11/13
11
BINARY SEARCH
PROGRAM binary_search
IMPLICIT NONE
INTEGER, PARAMETER :: MM=20INTEGER, 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(*,*)xiu=1
il=Nim=(iu+il)/2
DO
IF (ilx) THEN
il=im-1
ELSE
iu=im+1
ENDIF
END DO
END PROGRAM binary_search
output...
No of elements in the array5
Type in the list2
6
8
15
9
Search for
8
8 is found in the list at 3
-
7/25/2019 Fortran Programs Sai
12/13
12
BUBBLE SORT
PROGRAM bubble_sort
IMPLICIT NONE
INTEGER, PARAMETER :: MM=20INTEGER, 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=IDO J=I+1,N-1
IF (AA(J)>AA(K)) THENK=J
ENDIF
END DO
IF (K/=I) THEN
x=AA(I)
AA(I)=AA(K)
AA(K)=x
ENDIFEND 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 sorted12
49
540
54 12 9 4 0
-
7/25/2019 Fortran Programs Sai
13/13
13
GAUSS ELIMINATIONPROGRAM ELMN
IMPLICIT NONE
real,allocatable,dimension(:,:) :: a
real,allocatable,dimension(:) :: xreal :: 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)
enddodo 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))
enddoenddo
endif
enddox(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)enddoEND PROGRAM ELMN
output ..........................................................................no. of eqn
3
enter coeff
10 -1 -2 4
1 10 -1 3
2 3 20 7
soln
1 0.5034999852 0.335000008
3 0.349999994