问题在于cos(x)可以变为负数,然后cos(x)^ n可以不确定.插图:
np.cos(90)
-0.44807361612917013
和例如
np.cos(90) ** 1.7
nan
这会导致您收到两条错误消息.
如果您修改模型,例如到a b * np.cos(c * x d).然后该图如下所示:

可以在下面找到一些内联注释的代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
def f(x, a, b, c, d):
return a + b * np.cos(c * x + d)
# your data
xdata = [90, 60, 45, 30, 0]
ydata = [3.3888756187, 2.7662844365, 2.137309503, 1.5256883339, 1.4665463518]
# plot data
plt.plot(xdata, ydata, 'bo', label='data')
# fit the data
popt, pcov = curve_fit(f, xdata, ydata, p0=[3., .5, 0.1, 10.])
# plot the result
xdata_new = np.linspace(0, 100, 200)
plt.plot(xdata_new, f(xdata_new, *popt), 'r-', label='fit')
plt.legend(loc='best')
plt.show()
这篇博客探讨了在使用Python的`curve_fit`进行数据拟合时,由于cos函数可能导致负数,进而使得指数运算产生不确定性的错误。通过实例展示了当cos(x)^n中n为实数时,np.cos(90)**1.7出现nan的情况。作者提供了一段代码,展示如何调整模型以避免这种问题,并成功地对数据进行了拟合。代码中使用了numpy和matplotlib库进行数据处理和可视化。
3313

被折叠的 条评论
为什么被折叠?



