[問題] integrate (-inf,inf) 實際的積分範圍

作者: holycity (迪兒~)   2020-01-13 11:47:37
小弟要做convolution
原本是用numpy.convolve但出來的結果有些問題
後來改成用scipy.integrate.quad去乖乖做convolution的積分
測試了幾個簡單的functions結果正確,但也有測到結果很奇怪的
試著print了一下scipy.integrate.quad實際做積分時用的數字
發現他只是很快的在定義域抓一些數字去做計算
尤其是積分範圍是(-inf, inf)時抓的數字範圍很小
測試的code如下:
import numpy as np
import math
from scipy import integrate
def fn_1(t):
print(t)
return np.power(t, 2) * math.exp(-t**2)
temp_int_1 = integrate.quad(fn_1, -np.inf, np.inf)
temp_int_2 = integrate.quad(fn_1, -10**10, 10**10)
print(temp_int_1)
print(temp_int_2)
作者: as30385438 (LCT)   2020-01-13 15:31:00
程式沒這麼厲害好嗎, 定積分不要丟-inf到inf給他
作者: GeoMeTric ( )   2020-01-13 21:48:00
1. scipy 的 quad 允許上下界為 inf。2. 若上下界有其一為 inf,會轉換至 (0, 1) 區間。3. QUADPACK 並不適用任何函數,尤其是過大的積分範圍+ 相對小的範圍有顯著地的值。

Links booklink

Contact Us: admin [ a t ] ucptt.com