numpy gradient function and numerical derivatives numpy gradient function and numerical derivatives numpy numpy

numpy gradient function and numerical derivatives


In np.gradient you should tell the sample distance. To get the same results you should type:

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')

The default sample distance is 1 and that's why it works for x1.

If the distance is not even you have to compute it manually. If you use the forward difference you can do:

d = np.diff(y(x))/np.diff(x) 

If you are interested in computing central difference as np.gradient does you could do something like this:

x = np.array([1, 2, 4, 7, 11, 16], dtype=np.float)y = lambda x: x**2z1 = 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)