B:积分上限是无限大
A:积分下限为有限整数假设是0好了
请问大家,积分上下限为无限的的状况该怎么处理?
我想~不应该随便给一个很大的数值,结果会不一样。
以下我引用彭国伦FORTRAN90的范例
积分上限给一个很大的值,
A=0.0 ! 积分下限
B=1.0E+06 ! 积分上限
积分函数 常数*Exp(-4*x)
PROGRAM main
!implicit none
REAL Pi
PARAMETER(Pi=3.1415926)
REAL F, Cross_section_const
EXTERNAL F, Cross_section_const !补充宣告说明F, Cross_section_const 是函式
EXTERNAL SIMPSON_INT !补充宣告说明 SIMPSON_INT 是函式
REAL A, B ! 积分上限
REAL ANS ! 积分结果
A=0.0 ! 积分下限
B=1.0E+06 ! 积分上限
ANS = SIMPSON_INT(A, B, F) * &
SIMPSON_INT(A, B, Cross_section_const)! 常数做积分
WRITE(*,*) '积分结果:', ANS
PAUSE
STOP
END Program main
!C
!C 积分函数
REAL FUNCTION F(X) ! 自订函式宣告
implicit none
REAL X
F = Exp(-4*X)
RETURN
END
REAL FUNCTION Cross_section_const ! 自订函式宣告! 常数做积分
implicit none
Cross_section_const = 5.0
RETURN
END
!C
!C 辛普森法积分函数
!C
REAL FUNCTION SIMPSON_INT(A, B, FUNC)
Implicit None
REAL A, B
REAL FUNC
EXTERNAL FUNC
INTEGER INTERVALS
PARAMETER(INTERVALS=10000)
REAL C
REAL SUM
REAL STEP
REAL STEP2
STEP = (B-A)/INTERVALS
STEP2 = STEP*2
SUM = FUNC(A) + FUNC(B) ! 给一个函数初始值
DO C = A + STEP, B - STEP, STEP2
SUM = SUM + 4*FUNC(C)
EndDo
DO C = A + STEP2, B - STEP2, STEP2
SUM = SUM + 2*FUNC(C)
EndDo
SIMPSON_INT = SUM*STEP/3.0
RETURN
END