Algorithme sous MATLAB [Fermé]

Signaler
-
 jlf -
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

Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 282
le maximum d'une fonction, c'est une dérivée qui s'annule.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

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.
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 282
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".
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
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 282
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).
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.
Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 282
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.
ok merci char Snipeur. Ça devrais faire ce que je veux.

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