Salut
Je souhaite l'idée d'un algorithme qui fait la diagonalisation d'une matrice carrée.
Merci d'avance
Salut
Je souhaite l'idée d'un algorithme qui fait la diagonalisation d'une matrice carrée.
Merci d'avance
Salut,
l'algorithme de Gauss permet la résolution des systèmes linéaires en passant par la triangularisation.
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.
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
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.
Salut !
Avant de choisir un algorithme, il faut connaître certaines propriétés de ta matrice:un algorithme qui fait la diagonalisation d'une matrice carrée
- 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++.je doit utilisé ce programme dans un projet
Jean-Marc Blanc
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.
Bonjour,
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager