Scipy.Optimize.Curve_Fit不适合Cos ^ 2

时间:2019-07-14 17:28:17

标签: python optimization scipy

我正在尝试拟合以下形式的曲线

acos ^ 2(x + b)+ c

使用scipy的curve_fit例程,但是我无法让它找到好的参数。这种拟合似乎找不到正确的幅度或周期。

我尝试修改拟合函数并更改初始猜测以对数据进行数学运算。下面是拟合函数和拟合例程。

def fit(x, a, phi, b):
    return (a*abs(math.cos(x+phi)**2))+b

#Vectorizing fit function to accept list input
fit_v = np.vectorize(fit)

params1, covs1 = optimize.curve_fit(fit_v, data_1_x_calibrated, data_1_y, p0=[20,30,90])

使用以下代码绘制数据

#Plotting Fit 1
fit_1_y_data = []
for i in range(len(data_1_x)):
    fit_1_y_data.append(params1[0]*math.cos(data_1_x_calibrated[i]+params1[1])**2+params1[2])
plt.plot(data_1_x_calibrated, fit_1_y_data, label="Fit")
plt.plot(data_1_x_calibrated, data_1_y, "r", label = "Data")
plt.legend()

结果如下:数据和拟合图

任何帮助将不胜感激。

0 个答案:

没有答案