我建议您从简单的多项式拟合开始,scipy.optimize.curve_fit
尝试将f
必须知道的函数拟合到一组点上。
这是使用numpy.polyfit
和的简单3度多项式拟合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()