Fortran Programs Sai

download Fortran Programs Sai

of 13

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