在np.gradient你应该告诉样本距离.要获得相同的结果,您应该键入:
plt.plot(x1,np.gradient(y(x1),1),'r--o')
plt.plot(x2,np.gradient(y(x2),0.1),'b--o')
plt.plot(x3,np.gradient(y(x3),0.01),'g--o')
默认采样距离为1,这就是为什么它适用于x1.
如果距离不均匀,则必须手动计算.如果你使用前进的差异,你可以做:
d = np.diff(y(x))/np.diff(x)
如果您对计算中心差异感兴趣,则np.gradient可以执行以下操作:
x = np.array([1, 2, 4, 7, 11, 16], dtype=np.float)
y = lambda x: x**2
z1 = np.hstack((y(x[0]), y(x[:-1])))
z2 = np.hstack((y(x[1:]), y(x[-1])))
dx1 = np.hstack((0, np.diff(x)))
dx2 = np.hstack((np.diff(x), 0))
d = (z2-z1) / (dx2+dx1)