【问题标题】:Lorentzian fit warnings.warn('Covariance of the parameters could not be estimated',Lorentzian fit warnings.warn('无法估计参数的协方差',
【发布时间】:2020-09-19 09:52:23
【问题描述】:

我正在尝试使用以下等式拟合洛伦兹曲线: Lorentzian

import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np

# Fit a Lorentzian.
def duallorentz(x, x0, g, F,M) :
    return ( (F/M) /((x0**2 - x**2)**2 + (g*x)**2)**0.5) 
xdata = np.array([188.49, 191.63, 194.77, 196.66, 198.54, 200.43, 202.31 ,204.20,206.08,207.977,209.85])
ydata = np.array([0.0052, 0.0071, 0.0091, 0.0118,0.0152,0.225,0.228, 0.037, 0.017,0.012,0.009])

plt.plot(xdata, ydata, 'bo', label='experimental-data')

popt, pcov = curve_fit(duallorentz, xdata, ydata)
print(popt)

xFit = np.arange(0, 25)

plt.plot(xFit, duallorentz(xFit, *popt), 'r', label='fit params')

plt.xlabel('Frequency of the driven coupled oscillators.')
plt.ylabel('Amplitude of the driven coupled oscillators.')
plt.legend()
plt.title('Part II Data')

plt.show()

但它显示消息“warnings.warn('无法估计参数的协方差'”。这里有什么问题?

【问题讨论】:

  • 可能开始猜测。检查curve_fit 文档。
  • 您确定用于洛伦兹曲线的公式吗?我对(g*x)**2)**0.5中的x有疑问
  • @Liris 检查绘图标签,它建议耦合、阻尼和驱动振荡器;所以没关系。

标签: scipy curve-fitting


【解决方案1】:

由于您的拟合函数取决于 F/M 比率,因此它无法分别估计 F 和 M 的协方差。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-21
    • 2018-10-26
    • 2021-02-17
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    相关资源
    最近更新 更多