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 :

Diagonalisation d'un matrice


Sujet :

Mathématiques

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 125
    Points : 44
    Points
    44
    Par défaut Diagonalisation d'un matrice
    Salut

    Je souhaite l'idée d'un algorithme qui fait la diagonalisation d'une matrice carrée.

    Merci d'avance

  2. #2
    Membre habitué Avatar de larimoise
    Inscrit en
    Octobre 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 220
    Points : 197
    Points
    197
    Par défaut
    Salut,
    l'algorithme de Gauss permet la résolution des systèmes linéaires en passant par la triangularisation.

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    si tu ouvres un cours d'algèbre linéaire, tu trouveras un algorithme basique mais très courant utilisant le polynôme caractéristique. Mais il est souvent déconseillé.
    En règle générale, l'algorithme à utiliser dépend du type de matrice.
    Regarde donc dans l'incontournable Numerical recipes, tu trouveras tout ce que tu souhaites.

  4. #4
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut
    Salut,

    Avant d'appliquer un algorithme de diagonalisation, il faut tout d'abord vérifier si la matrice carrée est diagonalisable (même si elle n'est pas inversible).

    Sinon, pour les méthodes de calcul des valeurs propres et vecteurs propres, il y en a beaucoup :
    • Méthode des puissances ;
    • Méthode de Jacobi ;
    • Méthode de Givens-Householder ;
    • Méthode QR ;
    • Etc.


    --
    Wachter

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 125
    Points : 44
    Points
    44
    Par défaut
    Oui merci

    je connais le principe de Gauss mais moi je dois le programmer en language C. Ce que je souhaite c'est un algorithme pour que je puisse le transformer en C , je dois utiliser ce programme dans un projets.

  6. #6
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !
    un algorithme qui fait la diagonalisation d'une matrice carrée
    Avant de choisir un algorithme, il faut connaître certaines propriétés de ta matrice:
    • Quelle est sa taille (4*4 ou 4000*4000) ?
    • Est-elle symétrique ?
    • Si oui, est-elle définie positive ?


    Ensuite, tu dois savoir de quels résultats tu as besoin:
    • Toutes les valeurs propres et tous les vecteurs propres ?
    • Toutes les valeurs propres mais pas les vecteurs propres ?
    • Seulement la plus grande ou la plus petite valeur propre et le vecteur propre correspondant ?
    • Les deux ou trois plus grandes ou plus petites valeurs propres et les vecteurs propres correspondants ?


    Quand tu auras répondu à ces questions, il te sera possible de choisir l'algorithme qui convient le mieux.

    je doit utilisé ce programme dans un projet
    Je suppose que tu n'as pas trop de temps à perdre; alors pourquoi réinventer la roue au lieu d'utiliser un sous-programme existant. Sur le site www.netlib.org tu trouveras tout ce qu'il te faut dans les bibliothèques EisPack et LAPack. Si ton choix se porte sur une routine écrite en Fortran, utilise f2c pour la traduire en C; ce n'est pas optimal, mais, en général, ça marche. LAPack existe aussi en C++.

    Jean-Marc Blanc

  7. #7
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Je rappelle qu'on parle ici de 'trigonalisation' et non de 'diagonalisation'. Peu de matrices sont diagonalisables, ce sont celles qui ont toutes leurs v.p. dans le corps de base et pour chaque v.p. le sous-espace propre correspondant a pour dimension la multiplicité de la v.p. comme racine du polynôme caractéristique.
    Pour la trigonalisation, pas besoin de la notion de v.p. le pivot de Gauss suffit.

  8. #8
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    Citation Envoyé par alouha Voir le message
    je connais le principe de Gauss mais moi je dois le programmer en language C. Ce que je souhaite c'est un algorithme pour que je puisse le transformer en C , je dois utiliser ce programme dans un projets.
    euh... si tu connais le principe de Gauss, c'est que tu connais son algorithme !
    Donc tu n'as qu'à le traduire ou au pire prendre une version sur Google.

    Ensuite, nous t'avons posé tout un tas de questions afin de préciser tes besoins et surtout tout un tas de réponses et de liens. Ce serait bien que tu les lises en détail, que tu suives les liens et y réponde.

  9. #9
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 125
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Salut !

    Avant de choisir un algorithme, il faut connaître certaines propriétés de ta matrice:
    • Quelle est sa taille (4*4 ou 4000*4000) ?
    • Est-elle symétrique ?
    • Si oui, est-elle définie positive ?


    Ensuite, tu dois savoir de quels résultats tu as besoin:
    • Toutes les valeurs propres et tous les vecteurs propres ?
    • Toutes les valeurs propres mais pas les vecteurs propres ?
    • Seulement la plus grande ou la plus petite valeur propre et le vecteur propre correspondant ?
    • Les deux ou trois plus grandes ou plus petites valeurs propres et les vecteurs propres correspondants ?


    Quand tu auras répondu à ces questions, il te sera possible de choisir l'algorithme qui convient le mieux.


    Je suppose que tu n'as pas trop de temps à perdre; alors pourquoi réinventer la roue au lieu d'utiliser un sous-programme existant. Sur le site www.netlib.org tu trouveras tout ce qu'il te faut dans les bibliothèques EisPack et LAPack. Si ton choix se porte sur une routine écrite en Fortran, utilise f2c pour la traduire en C; ce n'est pas optimal, mais, en général, ça marche. LAPack existe aussi en C++.

    Jean-Marc Blanc
    Les propriétés de la matrice ce différé elle est carré mais ça peut être 4*4 ou d'autre chose.
    Pour google j'ai rien trouvé , et vous avez raison j'ai pas du temps a perde car ce programme c'est juste une petite partie de mon projet.

  10. #10
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonsoir,

    Citation Envoyé par alouha Voir le message
    Les propriétés de la matrice ce différé elle est carré mais ça peut être 4*4 ou d'autre chose.
    - Si elle n'est pas carrée, elle n'est pas diagonalisable
    - La taille n'importe pas.
    - Ce que l'on entendait par "propriétés", c'était des informations du style creuse, symétrique, etc.


    Citation Envoyé par alouha Voir le message
    Pour google j'ai rien trouvé , et vous avez raison j'ai pas du temps a perde car ce programme c'est juste une petite partie de mon projet.
    Ben... pourquoi ne suis tu pas les liens que l'on te donne ?

Discussions similaires

  1. Diagonalisation d'une matrice en Fortran 90
    Par janot92 dans le forum Fortran
    Réponses: 0
    Dernier message: 07/05/2013, 15h57
  2. Diagonalisation d'une matrice 3*3 symétrique
    Par wafa_ba dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/03/2013, 13h40
  3. Diagonalisation d'une matrice
    Par katypati dans le forum SAS IML
    Réponses: 3
    Dernier message: 09/01/2012, 22h26
  4. Réponses: 9
    Dernier message: 28/12/2009, 16h48
  5. diagonalisation d'une matrice carrée
    Par afnane dans le forum Mathématiques
    Réponses: 2
    Dernier message: 02/06/2008, 11h53

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