Advertisement
Guest User

Untitled

a guest
May 5th, 2015
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.02 KB | None | 0 0
  1. C=====Integrated Function===============================================
  2. REAL FUNCTION fun(x)
  3. REAL x
  4. !2*x
  5. !3*x**2
  6. !4*x**3
  7. !5*x**4
  8. !6*x**5
  9. !7*x**6
  10. !8*x**7
  11. !exp**(sin(3.1415926*(15*x)/180.0)+15*cos(3.1415926*(15*x)/180.0)
  12. fun=4*x**3
  13. END
  14.  
  15. C====Read parametres====================================================
  16. SUBROUTINE InputParams
  17. REAL a, b, dx
  18. COMMON/params/a, b, dx, n_steps
  19. OPEN(1, FILE = 'params.txt')
  20. READ(1, *)a, b, n_steps
  21. dx = (b - a)/n_steps
  22. CLOSE(1)
  23. END
  24.  
  25. C====Create grid========================================================
  26. SUBROUTINE CreateGrid(grid, n_steps)
  27. DIMENSION grid(n_steps + 1)
  28. CHARACTER f*16, s*16
  29. COMMON/params/a, b, dx
  30. n_steps = n_steps + 1
  31. point = a
  32. grid(1) = point
  33. DO i = 2, n_steps
  34. point = point + dx
  35. grid(i) = point
  36. END DO
  37. END
  38.  
  39. C=====Newtone-Cotes=====================================================
  40. REAL FUNCTION CotesNewtone(grid, n_steps)
  41. COMMON/params/a, b
  42. DIMENSION grid(n_steps)
  43. DIMENSION coef(6)
  44. DATA coef / 19.0, 75.0, 50.0, 50.0, 75.0, 19.0 /
  45. sum = 0.0
  46. DO i = 1, n_steps - 1
  47. a1 = grid(i)
  48. b1 = grid(i + 1)
  49. h = (b1 - a1)/5.0
  50. sum_int = 0.0
  51. DO j = 1, 6
  52. sum_int = sum_int + coef(j)*fun(a1 + (j - 1)*h)
  53. END DO
  54. sum = sum + sum_int*(b1 - a1)*(1.0/288.0)
  55. END DO
  56. CotesNewtone = sum
  57. END
  58.  
  59. C=====Gauss=============================================================
  60. REAL FUNCTION Gauss(grid, n_steps)
  61. DIMENSION grid(n_steps), q(3),x(3)
  62. REAL q, x, h, sum, sum_int, a, b
  63. COMMON/params/a, b
  64. DATA x / -0.7745967, 0.0, 0.7745967 /
  65. DATA q / 0.5555556, 0.8888889, 0.5555556 /
  66. h = (b-a)/(n_steps - 1)
  67. DO i = 1,3
  68. sum_int = 0.0
  69. DO j = 2, n_steps
  70. x1 = (grid(j-1)+grid(j)+x(i)*h)/2
  71. sum_int=sum_int+h*fun(x1)
  72. END DO
  73. sum = sum + q(i) * sum_int
  74. END DO
  75. Gauss = sum/2.0
  76. END
  77.  
  78. C=====Method of trapezoids==============================================
  79. REAL FUNCTION Trap(grid, n_steps)
  80. DIMENSION grid(n_steps)
  81. COMMON/params/a, b, dx
  82. sum = 0.0
  83. DO i = 2, n_steps - 1
  84. sum = sum + fun(grid(i))
  85. END DO
  86. Trap = (sum + (fun(grid(1)) + fun(grid(n_steps)))/2.0)*dx
  87. END
  88.  
  89. C=====Main function=====================================================
  90. PROGRAM Main
  91. REAL array
  92. DIMENSION array(1000000)
  93. REAL a, b, dx, ans
  94. COMMON/params/a, b, dx, n_steps
  95. CALL InputParams
  96. CALL CreateGrid(array(1), n_steps)
  97. ans = Trap(array(1), n_steps)
  98. PRINT *, ans
  99. ans = CotesNewtone(array(1), n_steps)
  100. PRINT *, ans
  101. ans = Gauss(array(1), n_steps)
  102. PRINT *, ans
  103. PAUSE
  104. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement