You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Lorentzian拟合代码失效,与内置Model拟合结果不符求助

Lorentzian曲线拟合问题:自定义函数与内置Model结果不符

我最近在做Lorentzian曲线拟合时碰到了麻烦——因为需要扩展拟合方程,不得不自己写自定义拟合代码。我分别用自定义def函数和内置的LorentzianModel两种方式实现了拟合,但结果完全对不上,自定义的代码根本没法正常工作。

数据处理代码

for dataset in [Bxfft]: 
    dataset = np.asarray(dataset) 
freqs, psd = signal.welch(dataset, fs=266336/300, window='hamming', nperseg=16192, scaling='density') 
plt.semilogy(freqs[30:-7000], psd[30:-7000]/dataset.size**0, color='r', label='Bx') 
x = freqs[100:-7900] 
y = psd[100:-7900] 

自定义Lorentzian拟合代码

def lorentzian(x, amp, cen, sig): 
    return (amp/np.pi) * (sig/(x-cen)**2 + sig**2) 
model = Model(lorentzian) 
pars = model.make_params(amp=6, cen=5, sig=1) 
pars['amp'].max = 6 
result = model.fit(y, pars, x=x) 
final_fit = result.best_fit 
print(result.fit_report(min_correl=0.25)) 
plt.plot(x, final_fit, 'k--', linewidth=3) 

内置LorentzianModel拟合代码

model2 = LorentzianModel() 
params2 = model2.make_params(amplitude=6, center=5, sigma=1) 
params2['amplitude'].value = 6 
result2 = model2.fit(y, params2, x=x) 
final_fit2 = result2.best_fit 
print(result2.fit_report(min_correl=0.25)) 
plt.plot(x, final_fit2, 'k--', linewidth=3) 

我对比了两种方法的拟合结果,上方是自定义def实现的拟合效果,下方是内置Model的拟合效果,差异非常明显:
拟合结果图

内容的提问来源于stack exchange,提问作者Hiddenguy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:47:42