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

Python Discussion :

créer une matrice diagonale


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut créer une matrice diagonale
    Salut ! J'aimerais savoir comment obtenir avec une matrice quelconque sur python, une matrice diagonale avec que des 1 en diagonale.

    J'ai cette matrice par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [[ 1.   1.   2.  ]
     [ 0.  -2.  -3.  ]
     [ 0.   0.   0.5 ]]

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par loic_poncin Voir le message
    J'aimerais savoir comment obtenir avec une matrice quelconque sur python, une matrice diagonale avec que des 1 en diagonale
    Il faut utiliser des packages scientifiques comme scipy ou seulement numpy. Pour les opérations simples comme diagonaliser une matrice, vous avez des fonctions genre numpy.diag.
    note: si c'est juste pour replacer par des 1 les cases d'indices (i, j) avec i = j et les autres par des zéros, voir les tutos. pour apprendre listes et boucles for.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    C'était bien quelque chose du type numpy.diag que je cherchais merci !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Pour les opérations simples comme diagonaliser une matrice, vous avez des fonctions genre ...
    Euh, la fonction numpy.diag ne diagonalise pas ! Elle permet simplement d'extraire une diagonale de la matrice, ou de creer une matrice diagonale a partir d'un vecteur.
    https://docs.scipy.org/doc/numpy/ref...umpy.diag.html


    C'est hors sujet par rapport a la question, mais du coup je réponds au titre du topic.
    Pour diagonaliser une matrice, vous pouvez utiliser le module numpy.linalg

    import numpy as np
    A = np.matrix([[1,2,3],[4,5,6],[7,8,1]])

    D, P = np.linalg.eig(A)

    np.diag(D) est la matrice A diagonalisée
    P est la matrice de passage.

    On peut vérifier que :
    A = P * D * P-1

    A - P.dot(np.diag(D)).dot(np.linalg.inv(P)) est egal a 0 (aux erreurs numériques pres !)

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Francixtra Voir le message
    Euh, la fonction numpy.diag ne diagonalise pas ! Elle permet simplement d'extraire une diagonale de la matrice, ou de creer une matrice diagonale a partir d'un vecteur.
    https://docs.scipy.org/doc/numpy/ref...umpy.diag.html
    Relisez le sujet: on ne cherche pas à diagonaliser mais à obtenir une matrice diagonale où seuls les indices i = j sont différents de 0. Pour faire çà np.diag suffit. Mais pour faire autre chose, sûr que çà ne le fait pas.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Relisez le sujet: on ne cherche pas à diagonaliser mais à obtenir une matrice diagonale où seuls les indices i = j sont différents de 0. Pour faire çà np.diag suffit. Mais pour faire autre chose, sûr que çà ne le fait pas.
    - W
    Le problème est dans le titre de la discussion : "Diagonalisation de matrice"
    La diagonalisation, c'est ca : https://fr.wikipedia.org/wiki/Diagonalisation

    Une recherche google "diagonaliser matrice python" amène directement sur cette page, alors que ce n'est pas la question posée, et qu'elle n'y répondait pas.

    C'est donc pour ca que je dis juste après :
    C'est hors sujet par rapport a la question, mais du coup je réponds au titre du topic.
    Libre a vous de renommer le titre du topic et de supprimer les réponses hors sujet.

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par Francixtra Voir le message
    Libre a vous de renommer le titre du topic et de supprimer les réponses hors sujet.
    J'ai renommé le titre du sujet puisqu'il vous a induit en erreur. Pour le reste, c'est une discussion pas l'entrée d'une FAQ donc on y trouve (ou pas) son bonheur.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Fonction VBA pour diagonaliser une matrice 3*3
    Par frisou65 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/08/2011, 08h53
  2. diagonalisation de matrice NxN
    Par seifdev dans le forum Algorithmes et structures de données
    Réponses: 24
    Dernier message: 30/03/2007, 17h15
  3. Conseils code sur diagonalisation de matrice et autre
    Par Math75 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 23/02/2005, 14h12

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