121 votes

Comment calculer une dérivée en utilisant Numpy?

Comment calculer la dérivée d'une fonction, par exemple

y = x2+1

en utilisant numpy ?

Supposons, je veux la valeur de la dérivée en x = 5...

6 votes

Vous devez utiliser Sympy : sympy.org/en/index.html Numpy est une bibliothèque de calcul numérique pour Python.

0 votes

Alternatively, do you want a method for estimating the numerical value of the derivative? For this you can use a finite difference method, but bear in mind they tend to be horribly noisy.

9voto

johnson Points 630

Vous pouvez utiliser scipy, ce qui est assez simple:

scipy.misc.derivative(func, x0, dx=1.0, n=1, args=(), order=3)

Trouvez la n-ième dérivée d'une fonction en un point.

Dans votre cas:

from scipy.misc import derivative

def f(x):
    return x**2 + 1

derivative(f, 5, dx=1e-6)
# 10.00000000139778

7voto

Gordon Schücker Points 417

Pour calculer les gradients, la communauté de l'apprentissage automatique utilise Autograd :

"Calcule efficacement les dérivées du code numpy."

Pour installer :

pip install autograd

Voici un exemple :

import autograd.numpy as np
from autograd import grad

def fct(x):
    y = x**2+1
    return y

grad_fct = grad(fct)
print(grad_fct(1.0))

Il peut également calculer les gradients de fonctions complexes, par exemple des fonctions multivariées.

3voto

fraxel Points 13844

En fonction du niveau de précision dont vous avez besoin, vous pouvez le calculer vous-même, en utilisant la preuve simple de la différenciation :

>>> (((5 + 0.1) ** 2 + 1) - ((5) ** 2 + 1)) / 0.1
10.09999999999998
>>> (((5 + 0.01) ** 2 + 1) - ((5) ** 2 + 1)) / 0.01
10.009999999999764
>>> (((5 + 0.0000000001) ** 2 + 1) - ((5) ** 2 + 1)) / 0.0000000001
10.00000082740371

nous ne pouvons pas réellement prendre la limite du gradient, mais c'est plutôt amusant. Il faut cependant faire attention car

>>> (((5+0.0000000000000001)**2+1)-((5)**2+1))/0.0000000000000001
0.0

2voto

Le sujet de la différenciation numérique est assez 'vaste' et il existe de nombreuses façons de calculer de telles dérivées entièrement numériquement. Je vous laisse suivre le lien précédent et déterminer si et comment appliquer de telles techniques à vos problèmes.

2voto

akakcolin Points 21

Voir ce lien, en utilisant Scipy

http://docs.scipy.org/doc/scipy/reference/generated/scipy.misc.derivative.html

Vous pouvez trouver votre réponse

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X