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...
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...
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
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
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.
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 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/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.