extrapolate.f90
Go to the documentation of this file.00001 program extrapolation
00002 implicit none
00003 real(8) :: lagint_4th
00004 real(8) :: x(4),y(4), v
00005 real(8) :: dx12, dx13, dx14, dx23, dx24, dx34
00006 real(8) :: dx21, dx31, dx32, dx41, dx42, dx43
00007 real(8) :: xv1, xv2, xv3, xv4, wex1, wex2, wex3, wex4
00008 integer :: i
00009
00010 open(1,file='data.dat',status='old')
00011 do i = 1, 4
00012 read(1,*) x(i),y(i)
00013 end do
00014 close(1)
00015 v = 0.0
00016
00017 dx12 = x(1) - x(2)
00018 dx13 = x(1) - x(3)
00019 dx14 = x(1) - x(4)
00020 dx23 = x(2) - x(3)
00021 dx24 = x(2) - x(4)
00022 dx34 = x(3) - x(4)
00023 dx21 = - dx12
00024 dx31 = - dx13
00025 dx32 = - dx23
00026 dx41 = - dx14
00027 dx42 = - dx24
00028 dx43 = - dx34
00029 xv1 = v - x(1)
00030 xv2 = v - x(2)
00031 xv3 = v - x(3)
00032 xv4 = v - x(4)
00033 wex1 = xv2*xv3*xv4/(dx12*dx13*dx14)
00034 wex2 = xv1*xv3*xv4/(dx21*dx23*dx24)
00035 wex3 = xv1*xv2*xv4/(dx31*dx32*dx34)
00036 wex4 = xv1*xv2*xv3/(dx41*dx42*dx43)
00037
00038 lagint_4th = wex1*y(1) + wex2*y(2) + wex3*y(3) + wex4*y(4)
00039
00040 open(1,file='ouput.dat',status='unknown')
00041 do i = 1, 4
00042 write(1,*) x(i),dabs(y(i) - lagint_4th)
00043 end do
00044 close(1)
00045
00046 end program extrapolation