Derivado de una matriz en python?

Actualmente tengo dos matrices numpy: y del mismo tamaño.

Me gustaría escribir una función (posiblemente llamando a las funciones numpy / scipy … si existen):

 def derivative(x, y, n = 1): # something return result 

donde result es una matriz numpy del mismo tamaño de x y que contiene el valor de la n -ésima derivada de y respecto a x (me gustaría que la derivada se evaluara utilizando varios valores de y para evitar resultados no uniformes) .

Este no es un problema simple, pero hay muchos métodos que han sido diseñados para manejarlo. Una solución simple es utilizar métodos de diferencias finitas . El comando `numpy.diff ‘usa diferenciación finita donde puede especificar el orden de la derivada. Wikipedia también tiene una página que enumera los coeficientes de diferenciación finitos necesarios para diferentes derivadas de diferentes precisiones. Si la función numpy no hace lo que quieres.

Dependiendo de su aplicación, también puede usar scipy.fftpack.diff, que utiliza una técnica completamente diferente para hacer lo mismo. Aunque su función necesita una transformada de Fourier bien definida.

Hay muchas, muchas y muchas variantes (por ejemplo, sum por parte de operadores de diferenciación finita u operadores diseñados para preservar constantes de evolución conocidas en su sistema de ecuaciones) en las dos ideas anteriores. Lo que debe hacer dependerá en gran medida de cuál sea el problema que está tratando de resolver.

Lo bueno es que se ha trabajado mucho en el campo. La página de Wikipedia de Diferenciación numérica tiene algunos recursos (aunque se centra en técnicas de diferenciación finita).

El proyecto findiff es un paquete de Python que puede hacer derivadas de matrices de cualquier dimensión con cualquier orden de precisión deseado (por supuesto, dependiendo de sus restricciones de hardware). Puede manejar matrices en cuadrículas uniformes y no uniformes y también puede crear generalizaciones de derivados, es decir, combinaciones lineales generales de derivadas parciales con coeficientes constantes y variables.