[問題] 關於積分上下限為無限大

作者: phystw (phys.tw)   2014-03-13 18:15:20
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
作者: sin55688 (單手挑藏獒)   2014-03-13 19:34:00
就算不一樣,應該也要很接近? 如果瑕積分收斂的話或許可以估餘項誤差,上界取的夠大,使餘項在接受誤差內?
作者: perceval (摸魚中)   2014-03-13 19:50:00
Gauss–Laguerre quadrature

Links booklink

Contact Us: admin [ a t ] ucptt.com