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

看板Fortran作者 (phys.tw)時間10年前 (2014/03/13 18:15), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/2 (看更多)
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

03/13 19:34, , 1F
就算不一樣,應該也要很接近? 如果瑕積分收斂的話
03/13 19:34, 1F

03/13 19:35, , 2F
或許可以估餘項誤差,上界取的夠大,使餘項在接受誤差內?
03/13 19:35, 2F

03/13 19:50, , 3F
Gauss–Laguerre quadrature
03/13 19:50, 3F
文章代碼(AID): #1J8OKxw0 (Fortran)
文章代碼(AID): #1J8OKxw0 (Fortran)