Class tcmatrix, diagonalisation de toutes matrices complexes.

Description

C'est la suite logique de la class TMatrix qui gérait exclusivement des matrices réelles.
http://www.delphifr.com/codes/CLASS-CALCUL-MATRICIEL-DIAGONALISATION-MATRICES-SYMETRIQUES-REELLES_37616.aspx

Ici on définit une class TCMatrix gérant des matrices complexes de dimensions variables.
Les opérations gérées sont:
-12 fonctions de création de matrices
-16 fonctions de base:addition,soustraction,multiplication,inversion,determinants...
-Décompositions LU,QR,QL,Hessenberg,Schur pour toutes matrices complexes.
-Le calcul des valeurs propres et des vecteurs propres de toutes matrices hermitiennes.
-Le calcul des valeurs propres et des vecteurs propres de toutes matrices complexes (ou réelles).

L'unité TCMatrix permet également:

-Le calcul de l'ensemble des racines de tout polynôme complexe.
-La résolution d'équations différentielles de la forme y'=M*y ou M est une matrice complexe et y un vecteur colonne.
-La résolution d'équation différentielles d'ordre n de la forme an*(d^ny/dt^n)+..+a1*dy/dt+a0*y=0
ou les aj sont des nombres complexes.

Une procédure permet en outre de tracer des courbes 1D et 2D de plusieurs types représentant les matrices.

Source / Exemple :


Le zip contient les unitées Matrix,CMatrix et Cplx qui sert à la gestion des nombres complexes.

Conclusion :


La plupart des fonctions sont surchargées pour supporter à la fois les matrices réelles et complexes.
La diagonalisation utilise la méthode QR avec décalages pour les matrices hermitiennes, pour les matrices non hermitiennes on utilise la décomposition de Schur.

La précision relative obtenue est encore de l'ordre de 10^-17 pour toutes matrices, par contre la diagonalisation d'une matrice complexe non hermitienne demande environs 10X plus de temps que pour une matrice symetrique réelle (2 secondes pour une matrice 100x100).

Limitations:

-La diagonalisation est lente pour les matrices non hermitiennes.
-Le calcul des vecteurs propre d'une matrice non hermitienne ayant des valeurs propres dégénérées pose problème.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.