EgorYankovsky

LR4

Apr 15th, 2022 (edited)
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.       PROGRAM MAIN
  2.       DIMENSION H(10000000)
  3.       COMMON /CONST_PI/ PI
  4.       PI = 3.1415927
  5.       N = 21
  6.  
  7. C      CALL GRID_CREATION(N, H)
  8. C      CALL GAUSS_3(N, H)
  9.  
  10.       DO I=1, N
  11.  
  12.             CALL GRID_CREATION(2**(I-1), H)
  13. C            CALL METHOD_OF_TRAPS(2**(I-1), H)
  14.             CALL SIMPSONS_METHOD(2**(I-1), H)
  15. c            CALL GAUSS_3(2**(I-1), H)
  16.       ENDDO
  17.  
  18.       END
  19.  
  20.  
  21. C ====================================================================
  22. C                             FUNCTION
  23. C ====================================================================  
  24.  
  25.       FUNCTION FUN(X)
  26.       COMMON /CONST_PI/ PI
  27. C      FUN = PI*SIN(2.5*PI*X) + 2.5*PI**2*X*COS(2.5*PI*X)
  28. C      FUN = X**5
  29.       FUN = -(X**5)/120 + (X**3)/6 - X
  30.       RETURN
  31.       END
  32.  
  33. C ====================================================================
  34. C                           GRID CREATION
  35. C ====================================================================  
  36.  
  37.       SUBROUTINE GRID_CREATION(N, H)
  38.       DIMENSION H(*)
  39.      
  40.       OPEN(1, FILE = 'input.txt', STATUS = 'OLD')
  41.       READ(1,*) A, B
  42. C      READ(1,*) A, B, N
  43.       CLOSE(1)
  44.  
  45.       STEP = ((B - A) / N)
  46.       N = N + 1
  47.  
  48.       DO I = 1, N - 1
  49.             H(I) = A + STEP * (I - 1)
  50.       ENDDO
  51.  
  52.       H(N) = B
  53.       RETURN
  54.       END
  55.  
  56.  
  57. C ====================================================================
  58. C                          METHOD OF TRAPS
  59. C ====================================================================
  60.  
  61.       SUBROUTINE METHOD_OF_TRAPS(N, H)
  62.       DIMENSION H(*)
  63.       STEP = H(N) - H(N-1)
  64.       PANSW = (FUN(H(1)) + FUN(H(N))) / 2
  65.       DO I = 2, N-1
  66.             PANSW = PANSW + FUN(H(I))
  67.       ENDDO
  68.  
  69.       PANSW = STEP * PANSW
  70.  
  71.       PRINT 1, N, PANSW
  72.     1 FORMAT(I5,' Method of traps:',E15.8)
  73.       END
  74.  
  75. C ====================================================================
  76. C                         SIMPSON'S METHOD
  77. C ====================================================================
  78.  
  79.       SUBROUTINE SIMPSONS_METHOD(N, H)
  80.       DIMENSION H(*)
  81.       PANSW = 0
  82.       STEP = H(N)-H(N-1)
  83.  
  84.       DO I=1, N-1
  85.             PANSW = PANSW + STEP * (FUN(H(I)) + 4 * FUN(H(I) + STEP/2)
  86.      +        + FUN(H(I)+STEP)) / 6
  87.       ENDDO
  88.  
  89.       PRINT 2, N, PANSW
  90.     2 FORMAT(I5,' Simpsons method:', E15.8)
  91.       END
  92.  
  93. C ====================================================================
  94. C                         GAUSS METHOD
  95. C ====================================================================
  96.  
  97.       SUBROUTINE GAUSS_3(N, H)
  98.       DIMENSION H(*), W(3), X(3)
  99.  
  100.       PANSW = 0
  101.       W(1) = 5./9.
  102.       W(2) = 8./9.
  103.       W(3) = 5./9.
  104.       X(1) = -1 * (0.6) ** (0.5)
  105.       X(2) = 0
  106.       X(3) = (0.6) ** (0.5)
  107.  
  108.       A = H(1)
  109.       B = H(N)
  110. C     DO I = 1, 2
  111. C       PANSW = PANSW + A(I) * DFUN  (1./2 * (B + Aa + X(I)*(B - Aa)))
  112. C     ENDDO
  113.       DO J = 2, N + 1
  114.         DO I = 1, 3
  115.           PANSW = PANSW + W(I) *
  116.      +    FUN(H(J) + 0.5*(X(I)+1)*(H(J-1)-H(J)))
  117.         ENDDO
  118.       ENDDO
  119.  
  120.       PANSW = PANSW * (B - A) / (2. * N)
  121.       PRINT 3, N, PANSW
  122.     3 FORMAT(I6,' Gauss method:', E15.8)
  123.       END
Add Comment
Please, Sign In to add comment