我有一些要点,我正在努力为这些要点拟合曲线。我知道有scipy.optimize.curve_fit功能,但是我不了解文档,即如何使用此功能。
scipy.optimize.curve_fit
我的观点: np.array([(1, 1), (2, 4), (3, 1), (9, 3)])
np.array([(1, 1), (2, 4), (3, 1), (9, 3)])
有人可以解释该怎么做吗?
我建议您从简单的多项式拟合开始,scipy.optimize.curve_fit尝试将f必须知道的函数拟合到一组点上。
f
这是使用numpy.polyfit和的简单3度多项式拟合poly1d,第一个执行最小二乘多项式拟合,第二个计算新点:
numpy.polyfit
poly1d
import numpy as np import matplotlib.pyplot as plt points = np.array([(1, 1), (2, 4), (3, 1), (9, 3)]) # get x and y vectors x = points[:,0] y = points[:,1] # calculate polynomial z = np.polyfit(x, y, 3) f = np.poly1d(z) # calculate new x's and y's x_new = np.linspace(x[0], x[-1], 50) y_new = f(x_new) plt.plot(x,y,'o', x_new, y_new) plt.xlim([x[0]-1, x[-1] + 1 ]) plt.show()