声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3683|回复: 0

[Fortran] 龙贝格数值积分的fortran源程序

[复制链接]
发表于 2006-11-12 08:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
  1.       SUBROUTINE ROMINT ( VAL, ERR, EPS, A, B, N, MAXE, F )
  2. C
  3.       IMPLICIT NONE

  4.       REAL A
  5.       REAL B
  6.       REAL BB
  7.       REAL EPS
  8.       REAL ERR
  9.       EXTERNAL F
  10.       REAL F
  11.       REAL H
  12.       INTEGER J
  13.       INTEGER K
  14.       INTEGER K0
  15.       INTEGER K1
  16.       INTEGER K2
  17.       INTEGER KK
  18.       INTEGER KKK
  19.       INTEGER L
  20.       INTEGER MAXE
  21.       INTEGER N
  22.       INTEGER N0
  23.       INTEGER N1
  24.       REAL R
  25.       REAL RM(16)
  26.       REAL S
  27.       REAL S0
  28.       REAL S1
  29.       REAL T
  30.       REAL VAL
  31. C
  32. C  INITIAL TRAPEZOID RULE.
  33. C
  34.       T = ( B - A ) * ( F(A) + F(B) ) * 0.5E+00
  35. C
  36. C  INITIAL RECTANGLE VALUE.
  37. C
  38.       RM(1) = ( B - A ) * F ( ( A + B ) * 0.5E+00 )

  39.       N = 2
  40.       R = 4.0E+00

  41.       DO 11 K = 1, MAXE

  42.         BB = ( R * 0.5E+00 - 1.0E+00 ) / ( R - 1.0E+00 )
  43. C
  44. C  IMPROVED TRAPEZOID VALUE.
  45. C
  46.         T = RM(1) + BB * ( T - RM(1) )
  47. C
  48. C  DOUBLE NUMBER OF SUBDIVISIONS OF (A,B).
  49. C
  50.         N = 2 * N
  51.         S = 0.0E+00
  52.         H = ( B - A ) / FLOAT ( N )
  53. C
  54. C  CALCULATE RECTANGLE VALUE.
  55. C
  56.         IF ( N - 32 ) 1, 1, 2
  57. 1       N0 = N
  58.         GO TO 4
  59. 2       N0 = 32
  60. 3       IF ( N - 512 ) 4, 4, 5
  61. 4       N1 = N
  62.         GO TO 6
  63. 5       N1 = 512
  64. 6       DO 9 K2 = 1, N, 512
  65.           S1 = 0.0E+00
  66.           KK = K2 + N1 - 1
  67.           DO 8 K1 = K2, KK, 32
  68.             S0 = 0.0E+00
  69.             KKK = K1 + N0 - 1
  70.             DO 7 K0 = K1, KKK, 2
  71.               S0 = S0 + F ( A + FLOAT ( K0 ) * H )
  72. 7           CONTINUE
  73.             S1 = S1 + S0
  74. 8         CONTINUE
  75.           S = S + S1
  76. 9       CONTINUE
  77.         RM(K+1) = 2.0E+00 * H * S
  78. C
  79. C  END CALCULATION OF RECTANGLE VALUE.
  80. C
  81.         R = 4.0E+00
  82. C
  83. C  FORM ROMBERG TABLE FROM RECTANGLE VALUES.
  84. C
  85.         DO 10 J = 1, K
  86.           L = K + 1 - J
  87.           RM(L) = RM(L+1) + ( RM(L+1) - RM(L) ) / ( R - 1.0E+00 )
  88.           R = 4.0E+00 * R
  89. 10      CONTINUE

  90.         ERR = ABS ( T - RM(1) ) * 0.5E+00
  91. C
  92. C  CONVERGENCE TEST.
  93. C
  94.         IF ( ERR - EPS ) 12, 12, 11

  95. 11    CONTINUE

  96.       K = 0

  97. 12    VAL = ( T + RM(1) ) * 0.5E+00
  98.       N = N + 1
  99.       MAXE = K

  100.       RETURN
  101.       END
复制代码
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-6 02:00 , Processed in 0.048085 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表