Bonjour,
J'ai un programme permettant de calculer le minimum d'une fonction à 2 variables, mais pas à déterminer en quelles valeurs ce minimum est atteint.
Si vous avez des idées je suis preneur.
Bonne journée
Bonjour,
J'ai un programme permettant de calculer le minimum d'une fonction à 2 variables, mais pas à déterminer en quelles valeurs ce minimum est atteint.
Si vous avez des idées je suis preneur.
Bonne journée
salut,
comme la fonction min() par exemple ?
Plutôt un "équivalent" de np.argmin() du coup. Sauf que np.argmin() c'est pour les listes. Ici florian veut optimiser des fonctions.
l'énoncé n'est pas très parlant, on ne sait pas quel est le "programme" en question qui permet de trouver la valeur minimum, ni si le PO a la main sur le code, ni même s'il est question de numpy...
dans tous les cas, à part prendre un intervalle donné pour tester les valeurs de la fonction (et donc éventuellement en tirer une liste qu'on filerait à numpy.argmin()) je vois pas comment on peut faire
donc ma solution, qui vaut ce qu'elle vaut, est d'utiliser le paramètre key de la fonction min() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 >>> f = lambda (a, b): a**2 + 3*b - 50 >>> min([f((a,b)) for b in range(-10,10) for a in range(-10,10)]) -80 >>> min([(a,b) for b in range(-10,10) for a in range(-10,10)], key=f) (0, -10) >>> f((0, -10)) -80
Voici le programme qui calcule le minimum pour la fonction entrée, je vais essayer votre programme et vous dire si cela marche .
Merci
Pour ma fonction j'aimerais une précision à 0.01 et je n'ai pas réussi à régler le pas des boucles for a 0.01, si vous avez une solution je suis preneur.
Bonne soirée
Salut,
Je ne sais pas si certains comprennent ta fonction mais il est de toutes façons préférable de faire un copier coller entre des balises code qu'une capture qui est d'ailleurs incomplète.
La fonction est encombrée parce que tu transmets une liste en argument et que tu dois donc en extraire chaque élément.
Crée plutôt une fonction qui prend x et y en argument, ne fut-ce que pour la clarté.
Malgré les deux return qui se suivent sans raison, ta fonction ne fait que retourner directement le résultat d'un calcul sans te donner de liberté d'évaluer quoi que ce soit, donc pour ta question initiale, il n'y a aucune possibilité.
Peut-être qu'en divisant l'algorithme en plusieurs parties ...
de ce que je lis de la fonction scipy.optimize.fmin() elle prend un éventuel paramètre full_output=True, affiche la valeur courante de la fonction et retourne au moins deux valeurs xopt et fopt respectivement le paramètre qui minimise la fonction et la valeur de la fonction à son minimum, le tout dans un nparray
quant à la précision dont tu parles, est-ce que ça ne pourrait pas correspondre au paramètre ftol ?
il semble néanmoins que Obofix avait vu juste, donc j'irais pas plus loin sur cette discussion ne connaissant pas {num,sci}py
Oui, effectivement le 2ème return ne sert à rien j'essayais des trucs pour afficher mes valeurs mais sans succès, et la fonction ne présente pas grand intérêt, je connais son minimum mais je ne vois toujours pas comment trouver pour quelles valeurs il est atteint.
Quand vous dites de diviser l'algorithme en plusieurs parties, je ne vois pas quelles sont les parties distinctes de l'algorithme
ftol je ne sais pas comment on s'en sert, ,ni à quoi il sert.
Partager