Bibliothèque en langage C - Calcul matriciel

Page d'accueil · Bibliothèque en langage C

La bibliothèque matrice.h de calcul matriciel définit les fonctions suivantes:

  • annuller tous les éléments d'une matrice;
  • addition de deux matrices;
  • soustraction de deux matrices;
  • copie les éléments d'une matrice dans une autre;
  • mutiplication de deux matrices;
  • multiplication d'une matrice par un réel;
  • détermine la matrice inverse d'une matrice carrée par la méthode:
    • de la décomposition en deux matrices triangulaires (L - R)
    • des coéfficients d'un polynome caractéristique
    • du pivot, le pivot est choisi dans chaque ligne comme étant le plus grand coéfficient non nul

Dans la bibliothèque, il y a trois méthodes différentes pour l'inversion d'une matrice carrée.

La fonction "inverse_matrice" qui utilise la décomposition en deux matrices triangulaires (L-R) est historiquement la première et avait été écrite juste pour voir si cela marchait. Testée valide jusqu'à une matrice de 600*600. Le temps d'inversion est le plus long des trois méthodes. A cause de la partie itérative pour arriver normalement à un meilleur résultat, il se pourrait que la matrice inverse soit fausse (jamais vu, mais pas impossible si itération ne converge pas).

La fonction "inverse_matrice_poly" a été écrite car la méthode d'inversion est jolie. A cause de la construction des matrices puissance (pour une matrice de n*n éléments, il faut calculer jusqu'a la matrice à la puissance n), la méthode n'est exacte que jusqu'à une matrice de 50*50 (après la précision est trop faible et il y a risque de dépassement de capacité des double).

La fonction "inverse_matrice_pivot" a été écrite pour être réellement utilisée. C'est la fonction la plus rapide en calcul et toute matrice inversable sera inversée quelque soient la disposition des éléments dans la matrice. Cette fonction a été testée valide jusqu'à une matrice de 1000*1000 (inversion en 190 secondes sur un PIII à 450 Hz)

!!! Correction de bug affectant les matrices non carrées le 21/06/12

Page précédente   Haut   Page suivante