Symétrie sur matrice.
Réponses à toutes vos questions de la 2nde à la Terminale toutes séries
-
natit
- Messages: 4
- Enregistré le: 24 Sep 2014, 17:54
-
par natit » 24 Sep 2014, 18:02
Bonjour à tous.
Tout d'abord désolé si je ne poste pas ce problème dans le bon forum, je ne savais pas si je devais le mettre dans "lycée" ou dans "supérieur". N'hésitez pas à le déplacer en cas de besoin.
J'ai un petit problème: Je dois automatiser une symétrie horizontale sur une matrice et je me demande si une "astuce" mathématique pourrait me permettre de le faire.
Explication:
J'ai une matrice du type:
| 1 2 3 |
| 4 5 6 |
| 7 8 9 |
que je dois transformer pour obtenir:
| 7 8 9 |
| 4 5 6 |
| 1 2 3 |
Je me suis cassé la tête un bon moment dessus et une symétrie parfaite ne me poserai aucun problème. Seulement là je dois garder l'ordre des nombres composant chaque ligne tout en inversant les colonnes :cry:
Merci d'avance pour votre aide :) :help:
-
zygomatique
- Habitué(e)
- Messages: 6928
- Enregistré le: 20 Mar 2014, 12:31
-
par zygomatique » 24 Sep 2014, 18:21
salut

remplace

par la transformation ::
1 --> 3
2 --> 2
3 --> 1
i --> 3 - i + 1
...
Ce qui est affirmé sans preuve peut être nié sans preuve. EUCLIDE
-
natit
- Messages: 4
- Enregistré le: 24 Sep 2014, 17:54
-
par natit » 24 Sep 2014, 19:51
Je ne sais pas si je peux passer par un système de calcul matriciel (le calcul doit être intégrer dans un script).
Désolé je me suis probablement mal exprimé à la base.
En gros cette "table" (ou matrice) se lit de gauche à droite (normal) mais de haut en bas alors qu'elle doit s'afficher de bas en haut.
Elle fait 76 colonnes par 83 lignes, donc 6390 valeurs qui se suivent toutes (ce ne sont pas des chiffres aléatoires).
En gros j'aimerai transformer:
0 ; 1 ; 2 ; 3 ; ... ; 73 ; 74 ; 75 ; 76
77 ; 78 ; 79 ; ... ; 151 ; 152 ; 153
...
6236 ; 6237 ; 6238 ; ... ; 6311 ; 6312 ; 6313
6314 ; 6315 ; 6316 ; ... ; 6387 ; 6388 ; 6389
--> en :
6314 ; 6315 ; 6316 ; ... ; 6387 ; 6388 ; 6389
6236 ; 6237 ; 6238 ; ... ; 6311 ; 6312 ; 6313
...
77 ; 78 ; 79 ; ... ; 151 ; 152 ; 153
0 ; 1 ; 2 ; 3 ; ... ; 73 ; 74 ; 75 ; 76
Je me demandais si une formule mathématique pourrait me permettre "d'inverser" cet ordre de ligne sans modifier l'ordre des valeurs dans les colonnes.
Exemple: calculer "la valeur absolue du nombre en cours - le nombre de valeurs" (donc la valeur absolue de x-6390) m'inverse les lignes et les lignes (forcément), mais j'aimerai garder intact l'ordre des colonnes (donc des valeurs au sein de ces lignes avec ce fameux pas de 77 valeurs).
J'ai peur de ne pas être clair, peut être que je demande l'impossible mais je suis persuadé qu'il existe une formule me permettrait de résoudre ce casse tête.
-
mathelot
par mathelot » 24 Sep 2014, 20:05
tu pourrais pas prendre une matrice P de changement de base (permutaation des vecteurs de base) puis sa transposée pour être dans le dual ? (c'est tellement vieux pour moi, je sais plus faire)
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 24 Sep 2014, 20:06
hello,
ben à partir du moment ou t'inverses des lignes, tu modifies pas l'ordre des colonnes...
Je vois pas en quoi la solution de zygomatique ne te convient pas?
tu pourrais pas prendre une matrice P de changement de base (permutaation des vecteurs de base) puis sa transposée pour être dans le dual ? (c'est tellement vieux pour moi, je sais plus faire)
je sais pas trop si c'est ce que tu as en tête, mais on peut poser P la matrice avec des 1 sur la diago de bas gauche à haut droite, et le produit
PM, avec M la matrice 1 2 3 machin, donne cette même matrice avec les lignes inversées
la vie est une fête

-
mathelot
par mathelot » 24 Sep 2014, 20:10
il veut une matrice

, avec des 0 et des 1, telle que la multiplication

permute les lignes de la matrice A
-
natit
- Messages: 4
- Enregistré le: 24 Sep 2014, 17:54
-
par natit » 24 Sep 2014, 20:13
@fatal_error: C'est probablement que j'ai mal compris sa solution alors.
Les matrices sont loin pour moi également et il me semblait qu'appliquer une transformation impliquait un calcul matriciel (que je ne pense pas pouvoir transformer dans le langage informatique imposé).
Etant donné que tous les nombres se suivent, que je connais le pas, la valeur min et la valeur max je pensais pouvoir trouver une formule pour effectuer automatiquement cette "symétrie horizontale".
-
natit
- Messages: 4
- Enregistré le: 24 Sep 2014, 17:54
-
par natit » 24 Sep 2014, 20:14
@Mathelot: Justement non je me demandais si il était possible de passer par autre chose qu'une matrice de transformation (étant donné que chaque chiffre = le précédent + 1)
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 24 Sep 2014, 20:18
ben
1) un produit matriciel c'est bidon à coder
2) si c'est pour faire ca en code, ya pas besoin de faire un produit matriciel, la solution de zygomatique est satisfaisante (enfin, tout dépend comment on définit satisfaisant)
3) mieux vaut un exemple idiot que tourner en rond...
http://jsfiddle.net/cep5m95f/ - Code: Tout sélectionner
function invertLines(M){
var r=[];
for(var i=M.length-1;i>=0;--i){
r.push(M[i]);
}
return r;
}
var result = invertLines([
[1,2,3],
[4,5,6],
[7,8,9]
]);
console.log(result.join('\n'));
//affiche
7,8,9
4,5,6
1,2,3
la vie est une fête

-
zygomatique
- Habitué(e)
- Messages: 6928
- Enregistré le: 20 Mar 2014, 12:31
-
par zygomatique » 25 Sep 2014, 12:59
soit M une matrice à n lignes (l1, l2, ... , ln)
on construit la matrice N à n lignes (l1 + ln, l2 + l(n-1), l3 + l(n-3), ... ,l(n - 1) + l2, ln + l1)
puis on calcule N - M
....
Ce qui est affirmé sans preuve peut être nié sans preuve. EUCLIDE
-
paquito
- Membre Complexe
- Messages: 2168
- Enregistré le: 26 Fév 2014, 12:55
-
par paquito » 25 Sep 2014, 15:51
Si ta matice est:

si tu prends:

,
tu vas avoir


;
si tu travailles en dimension 4 et que tu veux permuter la 1° et la dernière ligne

va devenir:

;
tout ce que je peux te dire, c'est que les matrices échangeant les lignes et les colonnes jouent un rôle primordial dans pas mal de démonstrations (j'ai eu le cas à l'écrit de l'agrégation) et sont à connaître. Je ne sais pas si j'ai répondu à ta question mais il y a une solution en dimension n! Y compris n=77; tu mets des 0 partout sauf dans la 2° diagonale où tu mets des 1. Et si tu fais M*A?
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 83 invités