IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mathématiques Discussion :

Diagonales de matrices carrées


Sujet :

Mathématiques

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 472
    Points : 121
    Points
    121
    Par défaut Diagonales de matrices carrées
    Bonjour à tous,

    Je voudrais savoir si il existe un algorithme ou une fonction mathématiques permettant, à partir des coordonnées d'un point dans une matrice carré, de connaitre la structure generale des diagonales possibles à partir de ce point. Autrement dit, avoir le départ ou l'arrivée de la diagonale à parti d'un des point de cette diagonale.

    Je voudrais quelque chose de simple. J'ai déjà codé ce problème àbase de conditions monstres et obligatoirement cela m'occupe de nombreuses lignes que je voudrais raccourcir.

    Merci de vos réponses.

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    Pourriez vous reformuler votre requête? Je ne suis pas sur d'avoir saisi votre exacte demande...

  3. #3
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Bon j'ai juste réfléchi (c'est un bien grand mot) mais il me semble que ceci devrait marcher (ça demande une démo mais je n'ai pas le temps de la faire, il faudrait une récurence).

    En gros voilà comment je ferai, pour la diagonale haut gauche -> bas droit.

    imaginons que tu sois en (i,j) (ligne i, colonne j) :

    supposons que tu sois dans le triangle haut (tu es au dessus de la diagonale). la diagonale a pour origine la ligne 1. Si tu es en dessous, tu es sur la colonne 1. Déjà tu as au moins une des coordonnée de ta diagonale.

    Ensuite, comment trouver la deuxième coordonnée ?

    Si tu es dans le triangle du haut, il faut trouver le décalage entre ta colonne (j) et la colonne de la digonale sur la même ligne, ce décalage sera donc j - colonne de la diagonale. la colonne de la diagonale est trouvée simplement en connaissant la ligne sur laquelle on est : si tu es sur la ligne 2, la diagonale est dans la colonne 2 (sur la même ligne).

    Tu as donc une coordonnée de ta diagonale si tu es au dessus de la diagonale principale.

    Maintenant, si tu es au dessous, il faut trouver la ligne sur laquelle se trouve ta diagonale (celle que tu cherches), comme tout à l'heure, c'est le décallage entre la colonne et la colonne de la diagonalle principale.

    Voila en gros quelle est la coordonnée de l'origine de ta diagonale :

    si je suis en (i,j) :

    ( i - j + 1 , 1) si je suis au dessus de la diagonale principale.
    (1 , j - i + 1) si je suis au dessous.

    Voilà donc pour une coordonnée, pour la suite, je pense que tu auras compris la démarche...

  4. #4
    Membre averti Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Points : 417
    Points
    417
    Par défaut
    Moi perso j'ai rien compris à la question posée...
    Première grosse démo en construction :
    http://bitbucket.org/rafy/exo2/

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 472
    Points : 121
    Points
    121
    Par défaut
    Je pense que tu as bien saisi le sens de ma question PRomu@ld.

    Je cherche à établir une formule générale pour trouver les coordonnées d'origine des diagonales d'un point dans une matrice carrée à partir d'un point quelconque (i, j) de la matrice.

    Malheureusement la solution proposée ne fonctionne pas. En effet si l'on considére que la matrice à pour origine (0,0) première case en haut à gauche.

    ( i - j + 1 , 1) si je suis au dessus de la diagonale principale.
    (1 , j - i + 1) si je suis au dessous.

    Exemple : i=3 et j=1 alors nous nous retrouvons en dessous de la diagonale principale [(0,0)-->(7,7)] dans une matrice 8*8;
    Le départ de la premiere diagonale à partir de ce point est (2,0) et le départ de la seconde diagonale est (0,4). Dans les deux cas la formule évoquée ne fonctionne pas, mais le raisonnement n'en est pas loin je pense.

  6. #6
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Oui, désolé, j'étais parti d'une matrice [1,1 - n,m]. Je suppose qu'il n'y a qu'un décalage d'indice avec ce que je t'ai proposé. Je repense au problème dans la journée si j'ai le temps.

  7. #7
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Si j'ai bien compris la question est de prendre un point (i,j) dans une matrice et de savoir quelle formule mathématique donne les coordonnées des diagonales.

    Ne serait-ce pas ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Pour une matrice qui va de (0,0) jusqu'à (n,n)
    Soit (i,j) le point qui nous intéresse
     
    Pour la première diagonale:
     
    Si  i - j < 0 alors
       Elle commence à ( 0, j - i) jusqu'à ( n - j + i, n) 
    Sinon
      Elle commence à (i-j, 0) jusqu'à (n, n-i+j)
     
    Pour la 2ème diagonale:
     
    Si i + j < n alors
       Elle commence à (0, i+j) jusqu'à (i+j,0)
    Sinon 
       Elle commence à (i - n + j , n) jusqu'à  ( n, j - n + i )
    J'ai testé avec quelques exemples sur une matrice 4*4, cela me semble correct,
    Jc

  8. #8
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Pour la première diagonale, ça doit être ça, en tout cas, il s'agit de la même idée que ce que j'avais exposé, il suffisait tout simplement de décaler les indices de 1, j'était parti sur une matrice 1,1 - n,m.

    Pour la deuxième diagonale, je n'ai pas vérifié mais je te fais confiance.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 472
    Points : 121
    Points
    121
    Par défaut
    Merci fearyourself,

    J'ai testé plusieurs cas sur une matrice 8*8 et cela fonctionne dans tous les cas particuliers. Je pense que la regle est générale.
    En tout cas merci.

  10. #10
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par samtheh
    Merci fearyourself,

    J'ai testé plusieurs cas sur une matrice 8*8 et cela fonctionne dans tous les cas particuliers. Je pense que la regle est générale.
    En tout cas merci.
    De rien, pense au

Discussions similaires

  1. Matrice carrée et permutation entre les diagonales
    Par zendeine88 dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 15/01/2014, 22h47
  2. Liste des sous-matrices carrées
    Par potimarara dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 12/10/2006, 18h30
  3. Calculer le determinant d'une matrice carrée
    Par NThierry dans le forum C
    Réponses: 15
    Dernier message: 27/08/2006, 11h31
  4. Sous matrice carrée d'une matrice carrée
    Par devils55 dans le forum C++
    Réponses: 2
    Dernier message: 13/11/2005, 19h07
  5. Initialisation d'une matrice carrée (malloc...)
    Par kilinette dans le forum C
    Réponses: 4
    Dernier message: 17/10/2005, 19h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo