作者phystw (phys.tw)
看板Fortran
标题[问题] 关於积分上下限为无限大
时间Thu Mar 13 18:15:20 2014
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
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.127.84
1F:推 sin55688:就算不一样,应该也要很接近? 如果瑕积分收敛的话 03/13 19:34
2F:→ sin55688:或许可以估余项误差,上界取的够大,使余项在接受误差内? 03/13 19:35
3F:推 perceval:Gauss–Laguerre quadrature 03/13 19:50