Algorithme sous MATLAB

Fermé
jlf - 8 juil. 2010 à 09:46
 jlf - 9 juil. 2010 à 15:48
Bonjour,

Je cherche une fonction sous MATLAB me permettant de trouver le maximum d'une fonction (matrices de données) avec 2 entrées et 4 sorties. Une seule solution est possible. es ce que quelqu'un à une idée de maniére dont il faudrait si prendre?
Merci



5 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
8 juil. 2010 à 11:08
le maximum d'une fonction, c'est une dérivée qui s'annule.
1
Je me suis mal exprimé. Je vais essayer de faire plus clair.

J'ai 2 entrées, a,b et deux matrices M1, M2.

a et b correspondent respectivement aux lignes et colonnes de chaque matrice M1 et M2.
Maintenant je veux déterminer le couple (a,b) qui me permet de trouver le max de la matrice M1 et de la matrice M2 sachant que les valeurs dans la matrice M1 sont différentes de celle dans la matrice M2.

Je pense que les algo d'optimisation peuvent être la solution mais j'ai aucunes connaissances.

Merci de vos suggestions.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
9 juil. 2010 à 08:10
décidément, je ne comprends pas... Pourrais tu donner un exemple ?
en fait, ce que je ne comprends pas, c'est "a correspond aux lignes de M1".
0
ok pennons l'exemple suivant :

M1 =[0 1 2 3; 4 5 6 7; 10 11 12 13]
M2 = [20 21 22 23; 25 26 27 28; 29 30 31 32]
a=[2; 3; 4]
b= [0.1, 0.2, 0.3, 0.4]

a=3 => 2eme ligne des matrices M1 et M2
b= 0.3 => 3eme colonne des matrices M1 et M2

on obtient alors la valeur 6 contenu dans M1 et la valeur 27 contenu dans M2

maintenant je cherche à optimiser le couple de valeur (a,b) qui me permettrai d'obtenir le rapport des valeurs le plus grand soit ici 6/27 = valeurs à optimiser

j'espère que ça t'aidera à comprendre.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
9 juil. 2010 à 11:59
Si je comprends bien, M1 et M2 sont indépendante de a et b (du moins de leur valeur).
le rapport des valeurs le plus grand, donc la maximum de l'un divisé par l'autre.
Si c'est ça :
M3=M1./M2;
[maxi,i]=max(M3);
[maxi,j]=max(max(M3));

et donc, ton couple est : (a(i),b(j)) pour la valeur "maxi".
Si ce n'est pas ça, c'est que ce n'est pas encore assez clair (on va y arriver à force).
0
je pense que l'on est sur le bon chemin. Pour trouver la max c'est parfait merci.

Maintenant je veux que mon rapport des valeurs soit égal à un nombre x.

Comment je peux itérer sur mes valeurs de M1 et M2 afin de trouver le/ les couple de valeur (a,b) respectant ma condition x?

j'essaie avec la Toolbox optimization de MATLAB mais je patauge un peu.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
9 juil. 2010 à 14:55
je dirai :
M3=M1./M2 -x;
M3=abs(M3);
Et ensuite, à la place de max tu fait min. En faisant "-x" tu centre M3 sur la valeur que tu veux (c'est à dire que tu met à 0) ensuite, abs prend la valeur absolue, c'est à dire que tout ce qui est négatif deviens positif. Ainsi, tu sait que la casse que tu cherches est la plus proche de zéro, donc le minimum.
0
ok merci char Snipeur. Ça devrais faire ce que je veux.

J'écris le code complet et vérifie sur mon application.
A+
0