gpt4 book ai didi

python - scipy 的曲线拟合不适用于正弦曲线?

转载 作者:行者123 更新时间:2023-11-28 20:44:28 31 4
gpt4 key购买 nike

我不明白这个数据拟合有什么问题:

from scipy.optimize import curve_fit
def sin_fit(x, *p):
a,b,c,d= p
return a + b*np.sin(c*x+ d)

# p0 is the initial guess for the fitting coefficients
p0 = [0.1, 1., 1., 0.1]

coeff, var_matrix = curve_fit(sin_fit, t, data, p0=p0)

我想要么有明显的错误,但我目前没有注意到,要么我不能使用 scipy 的曲线拟合来解决这个问题。有什么想法吗?

Failed Fit

最佳答案

这似乎是您最初猜测的问题,尤其是您选择的频率相差太远。根据您当前的初始猜测 p0curve_fit 不会足够快地收敛到一个好的答案,因此您需要选择一个更好的 p0。这是我的意思的一个例子:

t = np.linspace(0,50,1000)
data = 0.275 * (np.random.rand(len(t)) * 0.2 + 1.) * np.sin(2. * np.pi / 15. * t - 7.5)
p0 = [0.2, 0.5, 1.5 * np.pi / 14, 0.]

coeff, var_matrix = curve_fit(sin_fit, t, data, p0=p0)

plt.plot(t, data, 'bo')
plt.plot(t, sin_fit(t, *p0), 'g-')
plt.plot(t, sin_fit(t, *coeff), 'r-')

在下面您可以看到,初始猜测越接近(绿色曲线)curve_fit 将更好地执行拟合(红色曲线): example figure

关于python - scipy 的曲线拟合不适用于正弦曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26344655/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com