Mikhail Elizarev - 2 months ago 10x
Python Question

I really can not understand what numpy.gradient function does and how to use it for computation of multivariable function gradient.

For example, I have such a function:

``````def func(q, chi, delta):
return q * chi * delta
``````

I need to compute it's 3-dim gradient (in other words, I want to compute partial derivatives with respect to all variables (q, chi, delta)).

How can I calculate this gradient using NumPy?

The problem is, that numpy can't give you the derivatives directly and you have two options:

With NUMPY

What you essentially have to do, is to define a grid in three dimension and to evaluate the function on this grid. Afterwards you feed this table of function values to `numpy.gradient` to get an array with the numerical derivative for every dimension (variable).

Example from here:

``````from numpy import *

x,y,z = mgrid[-100:101:25., -100:101:25., -100:101:25.]

V = 2*x**2 + 3*y**2 - 4*z # just a random function for the potential

This is essentially, what `numpy.gradient` is doing for every point of your predefined grid.