python scipy.optimize曲线拟合只有两点

时间:2015-10-27 10:56:08

标签: python

我想仅为两个数据点拟合幂律模型(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中的错误?

1 个答案:

答案 0 :(得分:1)

您有两个自由参数和两个数据点,因此问题不足。拟合曲线完美地通过两个数据点而没有错误,因此优化器无法计算参数的协方差。