我想仅为两个数据点拟合幂律模型(x**m * c)
,以找出斜率m
。我正在使用curve_fit
中的scipy.optimize
函数来解决此问题。现在,当我运行以下代码时
import numpy as np
from scipy.optimize import curve_fit
func = lambda x, m, c: x**m * c
xdata = np.array([235e6, 610e6])
ydata = np.array([0.077, 0.054])
err = np.array([0.0086, 0.0055])
coeff, var = curve_fit(func, xdata, ydata, sigma=err)
print(coeff, var)
它成功返回m
的值,即coeff[0]
。但var
的值为[[ inf inf] [ inf inf]]
。因为只有两个数据点有什么问题吗?它无法计算最佳拟合参数值的协方差?那么如何计算m
中的错误?
答案 0 :(得分:1)
您有两个自由参数和两个数据点,因此问题不足。拟合曲线完美地通过两个数据点而没有错误,因此优化器无法计算参数的协方差。