我試圖從數字上解決使用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()
你嘗試,並期待在額外的信息四回報?您可以將您的集成函數添加到全局(例如列表)中,然後在向量循環之後檢查它。 –