[问题] 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