这是我的代码(这是一段较大代码的示例):
from scipy.optimize import curve_fit
def func(x, a, b):
return a + b*x
xlist = [10, 30, 50, 70, 90, 110, 130, 150, 170, 190, 210, 230]
ylist = [0.0074999999999999997, 0.011875, 0.0057812499999999999, 0.0036458333333333334, 0.0020312500000000001, 0.0013125000000000001, 0.00098958333333333342, 0.00089285714285714283, 0.00074218750000000001, 0.00093749999999999997, 0.00071874999999999999, 0.00088068181818181821]
popt, pcov = curve_fit(func, xlist, ylist)
print(popt[0], popt[1])
如您所见,我正在尝试使用非常简单的a + b*x
功能进行非常简单的拟合。问题是这会返回值:
(-119.99689110581872, 1.0)
对于a=popt[0]
和b=popt[1]
但与 zunzun.com 相同的拟合给出了更合理的值:
a = 7.8372289537296004E-03
b = -3.9402329475524466E-05
对于完全相同的功能。
我在这里做错了什么?
编辑
下面的沃伦说这可能是一个错误。我应该这样报告还是这是预期的行为?