Recherche du minimum d'une fonction
La fonction fminbnd
permet de trouver le minimum d'une fonction à une variable.
Il faut fournir d'une part la fonction f elle-même et d'autre part les bornes inférieure et supérieure de l'intervalle dans lequel le minimum est recherché. f peut être définie dans un fichier ou par l'intermédiaire d'une fonction anonyme.
Seule l'utilisation d'une fonction anonyme est traité ici (on peut s'inspirer de ce qui a été présenté pour fzero
si une fonction est définie dans un fichier).
Exemple :
On cherche le minimum de la fonction suivante :
dans l'intervalle compris entre -2 \pi et 2 \pi.
1 2 3 4 5 | >> f= @(x) sin (x.^2) - x.* cos (x); >> x_minimum = fminbnd (f,-2* pi ,2* pi ) x_minimum = 0.3919 |
En fait, par défaut, la fonction fminbnd
renvoie l'abscisse du minimum (parce qu'en pratique, c'est souvent ce que l'on cherche !), mais on peut aussi récupérer la valeur de ce minimum, c'est-à-dire l'ordonnée :
Exemple :
1 2 3 4 5 6 7 8 9 10 | >> [x_minimum,y_minimum,exitflag] = fminbnd (@(x) sin (x.^2) - x.* cos (x),-2* pi ,2* pi ) x_minimum = 0.3919 y_minimum = -0.2092 exitflag = 1 |
Remarque :
Le booléen renvoyé dans la variable exitflag
indique si la recherche a été fructueuse (exitflag=1
) ou non (exitflag=0
).
Attention :
Il est à noter que la valeur trouvée correspond toujours à un minimum local de la fonction, mais pas au minimum global. Il est prudent de toujours tracer la fonction pour avoir une idée de ce que l'on doit trouver...
1 | >> ezplot(f) |
Dans le cas d'une fonction dépendant de plusieurs paramètres, on s'inspirera de ce qui a été présenté de l'utilisation des fonctions anonymes avec fzero
.