salut tous,
en ce moment je bosse sur une matrice carré de taille T(n,n) et un vecteur U(n).
je veux faire un algorithme qui parcourt la diagonale de la matrice et qui cherche la valeur maximal de la colonne en dessous de la diagonale et son indice.
Pour ça pas de problèmes, je fais:
par contre une fois que ce max est trouvé j'aimerai inverser la ligne du max et la ligne "i" (pour T et U) en procédant de deux manières:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for i=1:1:n [max, indice]=max(T(i:n,i)) end
1°) en faisant une permutation classique
2°) en faisant une permutation à l'aide d'une multiplication matricielle
exemple:
voici ma matrice T= [3 2 1;3 1 0;4 5 9] et mon vecteur U=[9;5;0]
je suis sur à i=1 je remarque donc que sous mon terme diagonal j'ai la dernière ligne qui à le maximum je voudrais donc avoir à la fin de cette itération:
T= [4 5 9;3 1 0;3 2 1] et mon vecteur U=[0;5;9]
1°) avec une permutation classique
pensez vous que ceci fonctionne ? (j'ai pas MATLAB à disposition en ce moment ?) je pense que l'on peut faire plus rapide mais je ne sais pas trop comment, avez vous une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 for i=1:1:n if (T(i,i)<max(i:n,i)) [max, indice]=max(T(i:n,i)) ligneMaxT=T(i+indice,:); lignePermT=T(i,:); ligneMaxU=T(i+indice,:); lignePermU=T(i,:); T(i+indice,:)=lignePermT; T(i,:)=ligneMaxT; U(i+indice,:)=lignePermU; U(i,:)=ligneMaxU; end end
2°) avec une matrice de multiplication
la première solution est la plus classique, à présent j'aimerai faire une autre solution : j'aimerai construire une matrice A qui me permettent de faire la même permutation que tout à l'heure en faisant les opérations:
T=A*T et U=A*U;
par contre là je sèche complétement
pourriez vous m'aidez svp ?
Partager