python(scipy)曲线拟合的结果奇怪

这是我的代码(这是较大代码的示例):


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)

对于zunzun.com a=popt[0],b=popt[1]但与zunzun.com的拟合度相同,它提供了更多合理的值:


a = 7.8372289537296004E-03

b = -3.9402329475524466E-05

完全相同的功能。


我在这里做错了什么?


紫衣仙女
浏览 209回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python