Bon, voila, j'avais ecrit pour mon TIPE des bouts de programmes de calcul matriciel, et récemment j'ai du écrire des programmes en Matlab pour l'école. Je me suis dit qu'il était dommage de ne pas pouvoir utiliser ces fonctions dans mon langage favoris ;-) J'ai trouvé aussi que le sujet était intéressant d'un point de vu mathématique. Après quelques tests d'algorithmes sous Matlab j'ai vu que cela était faisable.
Cette unité définit donc une Class: TMatrix gérant des matrices réelles de dimensions variables.
Pour éviter autant que possible de remplir une matrice élément par élément, on définit une dizaine de fonctions de création de vecteurs et de matrices particulières (Equivalent des fonctions matlab Rand, LinSpace, SpDiags...).
Les opérations gérées sont:
Les fonctions de base addition, soustraction, multiplication, transposition, calcul de produits scalaires, de normes pour tous type de matrices.
Le reste des opérations est principalement destiné aux matrices carrés:
-Inversion, calcul de déterminants
-Divers types de décompositions: LU, QR, QL, Hessenberg pour toutes matrices carrés.
-Le calcul des valeurs propres d'une matrice symétrique (en O(n^2))
-Le calcul des valeurs propres et des vecteurs propres d'une matrice symétrique (en O(n^3))
Une procédure permet de tracer des courbes 1D et 2D de plusieurs types représentant les matrices.