pxjoke

VMAT_lab1_24

Apr 9th, 2015
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. program lab1
  2.   interface
  3.     real function G(t)
  4.         real t
  5.     end function G
  6.   end interface
  7.  
  8.   interface
  9.     real function lagrange (ARR_X, ARR_Y, X)
  10.         real ARR_X(11),ARR_Y(11),X, part, res
  11.     end function lagrange
  12.   end interface
  13.  
  14.   integer NOFUN, I, N
  15.   real A, RELERR, ABSERR, RESULT, ERREST, FLAG, X, ARR_X(11), ARR_Y(11), B(11), C(11), D(11)
  16.   DATA A/0./,RELERR/1.E-07/,ABSERR/0.0/, X/1.0/
  17.   I = 1
  18.   N = 11
  19.   do  while(X < 3.2)
  20.   write(*,*) "X = ", X
  21.     ARR_X(I) = X
  22.     CALL QUANC8(G, A, X, ABSERR, RELERR, RESULT, ERREST, NOFUN, FLAG)
  23.     ARR_Y(I) = RESULT
  24.     I = I + 1
  25.     X = X + 0.2    
  26.     write(*,*) "RESULT = ", RESULT  
  27.   end do
  28.  
  29.   CALL SPLINE (N,ARR_X,ARR_Y,B,C,D)  
  30.  
  31.   do k=0, 20
  32.     X = 1.0 + 0.1 * k
  33.     write(*,*) "----------------------------------------------"
  34.     write(*,*) "X = ", X
  35.     CALL QUANC8(G,A,X,ABSERR,RELERR,RESULT,ERREST,NOFUN,FLAG)
  36.     write(*,*) "QUANC8   = ", RESULT
  37.     write(*,*) "Lagrange = ", lagrange(ARR_X, ARR_Y, X), "   Q - L = ", RESULT - lagrange(ARR_X, ARR_Y, X)
  38.     write(*,*) "Spline   = ", SEVAL(N,X,ARR_X,ARR_Y,B,C,D), "   Q - S = ", RESULT - SEVAL(N,X,ARR_X,ARR_Y,B,C,D)
  39.   end do
  40. end program lab1
  41.  
  42. real function G(t)
  43.     real t
  44.     G = sqrt(t) * sin(t)
  45. end function G
  46.  
  47. real function lagrange (ARR_X, ARR_Y, X)
  48. real ARR_X(11),ARR_Y(11),X, part, res
  49. res = 0
  50. do i = 1,11
  51.   part = ARR_Y(i)
  52.   do j = 1, 11
  53.     if (i .ne. j) then
  54.        part = part * (X-ARR_X(j)) / (ARR_X(I) - ARR_X(j))
  55.     end if
  56.   end do
  57.   res = res + part    
  58. end do
  59. lagrange = res
  60. end function lagrange
Advertisement
Add Comment
Please, Sign In to add comment