我想用-a*sin(b*x + c)(或者也可以是-a*sin(2*x))形式的函数来拟合下面所附的数据,a b c作为要确定的值。我使用了scipy.optimize.curve_fit,但它的工作效果不太好(正如您在image中看到的那样)。我该如何改进?在
代码:import numpy as np
import matplotlib.pylab as plt
data = open('pruebaData.dat', 'r')
lines = data.readlines()[1:]
x = []
y = []
for line in lines:
pos = line.split()
if pos != []:
x.append(float(pos[0]))
y.append(float(pos[1]))
z = []
for k in range(len(x)):
z.append(np.deg2rad(x[k]))
valX = np.asarray(z)
valY = np.asarray(y)
from scipy.optimize import curve_fit
def fitFunc(X,a,b,c):
return (- a*np.sin(b*X + c))
fig = plt.figure(2, figsize = (10,8))
init_vals = [1,1,1]
best_vals, covar = curve_fit(fitFunc, valX, valY, p0&#