integrate函数python_scipy.integrate Pseudo-Voigt函数,积分变为0

我正在编写一个脚本,使用Scipy,Numpy和Matplotlib在Python中将峰形拟合到光谱数据 . 它可以同时适应多个峰值 . 峰值曲线(现在)是Pseudo-Voigt,它是高斯(aka Normal)和Lorentzian(aka Cauchy)分布的线性组合 .

我有一个选项开关,我可以让软件优化高斯和洛伦兹的贡献或将其设置为固定值(其中0 =纯高斯和1 =纯洛伦兹) . 按预期工作,绘制拟合的峰值看起来像预期的那样 . 当我尝试使用 scipy.integrate 计算峰的积分时,问题就开始了 .

到目前为止,我尝试了scipy.integrate.quad,scipy.integrate.quadrature,scipy.integrate.fixed_quad和scipy.integrate.romberg . 当峰值为纯高斯时,积分变为类似于 1.73476E-34 (并不总是相同的数字),即使对于明显具有比非纯高斯相邻的峰值更大的区域的峰值,但返回10到1000量级的有限积分这是相关部件的样子:

# Function defining the peak functions for plotting and integration

# WavNr: Wave number, the x-axis over which shall be integrated

# Pos: Peak center position

# Amp: Amplitude of the peak

# GammaL: Gamma parameter of the Lorentzian distribution

# FracL: Fraction of Lorentzian distribution

def PseudoVoigtFunction(WavNr, Pos, Amp, GammaL, FracL):

SigmaG = GammaL / np.sqrt(2*np.log(2)) # Calculate the sigma parameter for the Gaussian distribution from GammaL (coupled in Pseudo-Voigt)

LorentzPart = Amp * (GammaL**2 / ((WavNr - Pos)**2 + GammaL**2)) # Lorentzian distribution

GaussPart = Amp * np.exp( -((WavNr - Pos)/SigmaG)**2) # Gaussian distribution

Fit = FracL * LorentzPart + (1 - FracL) * GaussPart # Linear combination of the two parts (or distributions)

return Fit

这是绘图函数通过以下方式调用的:

Fit = PseudoVoigtFunction(WavNr, Pos, Amp, GammaL, FracL)

哪个工作正常 . 它也由集成商通过以下方式调用:

PeakArea, PeakAreaError = integrate.quad(PseudoVoigtFunction, -np.inf, np.inf, args=(Pos, Amp, GammaL, FracL))

或scipy.integrate提供的任何其他变体,都具有相同的结果,如果FracL = 0,则PeakArea =(几乎)0 .

我确定问题只是我太愚蠢而无法弄清楚scipy.integrate如何使用比我能找到的示例更复杂的函数 . 希望有人看到我不知道的明显错误 . 两天搜索stackoverflow和Scipy Docs并重新排列并完全重写我的代码让我无处可去 . 我怀疑scipy.integrate中的args在某种程度上与问题有关,但对于我能找到的所有内容,它们似乎都是正确排列的 .

在此先感谢,Os

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值