Trouver le minimum et le maximum des valeurs d'une fonction
J'ai une fonction et je voudrais trouver ses valeurs maximum et minimum. Ma fonction est: est-ce
def function(x, y):
exp = (math.pow(x, 2) + math.pow(y, 2)) * -1
return math.exp(exp) * math.cos(x * y) * math.sin(x * y)
J'ai un intervalle de x [-1, 1] et y [-1, 1]. Je voudrais trouver un moyen, limité à cet intervalle, de découvrir les valeurs max et min de cette fonction.
Êtes-vous vraiment limité à cette fonction? Ou voulez-vous être en mesure de le faire pour une fonction arbitraire? Si c'est juste cette fonction, vous pouvez trouver par rapport extrema par la différenciation.
Vous devriez probablement prendre un coup d'oeil ici: docs.scipy.org/doc/scipy/reference/optimize.html
Voulez-vous fermer les estimations ou exactement à virgule flottante maximum?
Salut, @mgilson, c'est une fonction de test. Il peut changer.
il pourrait être proche des estimations. Merci à vous tous.
Vous devriez probablement prendre un coup d'oeil ici: docs.scipy.org/doc/scipy/reference/optimize.html
Voulez-vous fermer les estimations ou exactement à virgule flottante maximum?
Salut, @mgilson, c'est une fonction de test. Il peut changer.
il pourrait être proche des estimations. Merci à vous tous.
OriginalL'auteur pceccon | 2013-09-23
Vous devez vous connecter pour publier un commentaire.
En utilisant, par exemple,
scipy
'sfmin
(qui contient une mise en œuvre de la Nelder-Mead algorithme de), vous pouvez essayer ceci:qui produit la sortie suivante:
Veuillez garder à l'esprit que:
1) avec
scipy
vous avez besoin de convertir votre fonction dans une fonction acceptant un tableau (j'ai montré comment le faire dans l'exemple ci-dessus);2)
fmin
utilise, comme la plupart de ses paires, un algorithme itératif, par conséquent, vous devez fournir un point de départ (dans mon exemple, j'ai fourni(0,0)
). Vous pouvez fournir des points de départ différents pour obtenir différents minima/maxima.Vous pouvez utiliser une méthode qui prend en charge la variable de délimitation, comme
fmin_tnc
(elle s'utilise comme ceci:fmin_tnc(f,np.array([0.5,-0.5]), approx_grad=True, bounds=[(-1,1),(-1,1)])
).OriginalL'auteur Emanuele Bezzi
Ici est quelque chose qui donne une assez proches des estimations (pas exact).
OriginalL'auteur Shashank