我试图从数字上解决使用NumPy和quad
从scipy.integrate
以下积分。该代码是有点儿工作,但我得到虚假的缺口中得到的数据:使用来自scipy.integrate的四元数值积分结果中的虚假陷波
任何人有他们为什么发生,以及如何得到正确的结果,平稳的想法?
这里是在Python原代码:
#!/usr/bin/env python
import numpy as np
from scipy.integrate import quad
import matplotlib.pyplot as pl
numpts = 300
t_min = -4
t_max = 100
tt = np.linspace(t_min, t_max, numpts)
mean = 0. # ps
fwhm = .05 # ps
def gaussian(x, mean, fwhm):
return 1./np.sqrt(np.pi)/fwhm * np.exp(-1. * (x - mean)**2/fwhm**2)
def integrand(t_, t, mean, fwhm):
denum = np.sqrt(t - t_)
r = gaussian(t_, mean, fwhm)/denum
return r
def integrate(t, mean, fwhm, tmin):
return quad(integrand, tmin, t - 1e-9, args=(t, mean, fwhm))[0]
if __name__ == '__main__':
vec_int = np.vectorize(integrate)
y = vec_int(tt, mean, fwhm, tt.min())
fig = pl.figure()
ax = fig.add_subplot(111)
ax.plot(tt, y, 'bo-', mec='none')
ax.set_xlim(-5, 101)
pl.show()
你尝试,并期待在额外的信息四回报?您可以将您的集成函数添加到全局(例如列表)中,然后在向量循环之后检查它。 –