Recherche de  maximum

S. D. a écrit:
 Je veux savoir s'il est possible avec Matlab de déterminer les coordonnées d'un point du graphe. Par exemple soit A le maximum d'une fonction f(x), peut avoir les coordonnées de A. Je sais par contre comment déterminer les extremums d'un graphe mais pas les abscisses correspondantes.


je ne suis pas sûr que votre problème soit bien posé.
Dans un premier temps, pour répondre à votre question voici un exemple qu'il sera facile d'adapter à d'autres situations:

>> x=-4:0.1:4;
>> y=-cos(x);
>> plot(x,y)
>> [ym,i]=max(y)
ym =
    0.9991
ind =
    10
>> x(10)
ans =
   -3.1000

On voit apparaitre plusieurs difficultés:
- une seule abscisse de maximum est obtenue, alors qu'il y en a deux.
- le maximum correspondant à la représentation graphique de la fonction n'est pas le maximum de la fonction!
C'est le maximum des valeurs images par la fonction des points de discrétisation choisis par matlab pour effectuer la représentation graphique. Essayez ceci pour comprendre :

>> plot(x,y,'o')

Pour rechercher le maximum d'une fonction, il existe la commande fminbnd.
Pour l'utiliser, il faut commencer par définir la fonction dans un fichier f.m :

function y = f(x)
y = cos(x);

(les maximums de f sont les minimums de -f).
puis

>>[xm,ym]=fminbnd(@f,-4,4)
xm =
   -3.1416
ym =
   -1.0000

xm est l'abscisse où est atteint le maximum et ym l'opposé de la valeur maximal (compte tenu du changement f en -f).

Bien entendu là encore on ne calcule que l'une des abscisses correspondant au maximum.

Pour obtenir l'autre, il suffit d'adapter l'intervalle de recherche du miminum :

>>[xm,ym]=fminbnd(@f,0,4)

Comme les extremum correspondent à des points critiques, on peut aussi rechercher les zéros de la dérivée de f grace à la commande fzero.

 

(c) Stéphane Balac - Centre de Mathématiques - INSA de Lyon.