tutorial functions python numpy scipy gradient

functions - numpy python tutorial



Cálculo de gradiente con NumPy (5)

Numpy no admite cálculos de gradiente directamente sin crear una grilla completa de puntos. En cambio, usaría autodiferenciación. Consulte https://code.activestate.com/recipes/580610-auto-differentiation/ para saber cómo hacerlo en Python.

Realmente no puedo entender qué función numpy.gradient tiene y cómo usarla para calcular el gradiente de función multivariable .

Por ejemplo, tengo esa función:

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

Necesito calcular su gradiente tridimensional (en otras palabras, quiero calcular derivadas parciales con respecto a todas las variables (q, chi, delta)).

¿Cómo puedo calcular este gradiente usando NumPy?


Numpy y Scipy son para cálculos numéricos. Como desea calcular el gradiente de una función analítica, debe usar el paquete Sympy que admite matemática simbólica. La diferenciación se explica aquí (puedes usarla en la consola web en la esquina inferior izquierda).

Puedes instalar Sympy en Ubuntu con

sudo apt-get install python-sympy

o bajo cualquier distribución de Linux con pip

sudo pip install sympy



El problema es que ese numpy no puede darte los derivados directamente y tienes dos opciones:

Con NUMPY

Lo que esencialmente tiene que hacer, es definir una grilla en tres dimensiones y evaluar la función en esta grilla. Después, alimenta esta tabla de valores de función a numpy.gradient para obtener una matriz con la derivada numérica para cada dimensión (variable).

Ejemplo de aquí :

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 Ex,Ey,Ez = gradient(V)

Sin NUMPY

También puede calcular la derivada usted mismo usando el cociente de diferencia centrado .

Esto es esencialmente lo que está haciendo numpy.gradient para cada punto de su grilla predefinida.