我正在尝试拟合以下形式的曲线
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()
结果如下:数据和拟合图
任何帮助将不胜感激。