Comment calculer la dérivée d'une fonction, par exemple
y = x2+1
en utilisant numpy
?
Disons, je veux la valeur de la dérivée à x = 5...
Comment calculer la dérivée d'une fonction, par exemple
y = x2+1
en utilisant numpy
?
Disons, je veux la valeur de la dérivée à x = 5...
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
Pour calculer les gradients, la communauté de l'apprentissage automatique utilise Autograd :
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.
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
En réalité, nous ne pouvons pas prendre la limite du gradient, mais c'est assez amusant. Il faut quand même faire attention car
>>> (((5+0.0000000000000001)**2+1)-((5)**2+1))/0.0000000000000001
0.0
Le sujet de 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 pour découvrir si et comment appliquer de telles techniques à vos problèmes.
Voici ce lien, en utilisant Scipy
http://docs.scipy.org/doc/scipy/reference/generated/scipy.misc.derivative.html
Vous pouvez trouver votre réponse
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.
6 votes
Vous devez utiliser Sympy : sympy.org/fr/index.html. Numpy est une bibliothèque de calcul numérique pour Python.
0 votes
Alternatively, voulez-vous une méthode pour estimer la valeur numérique de la dérivée? Pour cela, vous pouvez utiliser une méthode de différences finies, mais gardez à l'esprit qu'elles ont tendance à être horriblement bruyantes.