Lidy - bibliothèque de gestion de matrices creuses

Soyez le premier à donner votre avis sur cette source.

Vue 9 634 fois - Téléchargée 602 fois

Description

Lidy est une bibliothèque permettant de gérer les matrices creuses. Par définition, les matrices sont des tableaux bi-dimensionnels contenant généralement beaucoup de valeurs de nulles. Lors de la plupart des opérations matricielles, ces valeurs deviennent inutiles. Le rôle des matrices creuses est donc de supprimer cette information afin d'économiser de la place lors de leur transfert en mémoire et de diminuer le temps d'exécution des opérations matricielles.

Pour stocker ces matrices creuses, il est nécessaire de choisir une structure de données particulièrement bien adaptée. L'inconvénient majeur est l'accroissement du temps d'exécution des opérations matricielles dès que les matrices deviennent pleines.

Cette bibliothèque permet de réaliser plusieurs opérations :
- Addition matricielle
- Soustraction matricielle
- Multiplication matricielle
- Multiplication d'une matrice par un scalaire
- Division d'une matrice par un scalaire
- Calcul de transposée

En outre, il est possible de charger et de sauvegarder une matrice creuse à l'aide d'un fichier au format XML en dédiant le parsing à la bibliothèque libxml2. Ce format a été choisi car il présente l'avantage d'être libre de droits et d'organiser proprement les données. Quant à libxml2, elle a été préférée pour être gratuite et multi-plateformes.

De plus, il est possible d'utiliser la bibliothèque dans un projet C / C++ et de modifier le type des données contenues dans les matrices (double par défaut).

Enfin, il est à noter que la bibliothèque a été développée avec gcc-4.1.0 sous une Fedora Core 5 avec libxml2-2.6.26. Il existe deux versions de la bibliothèque :
- Lidy uniquement
- Lidy + libxml2-2.6.26

Je ne déposerai ici que la première version pour ne pas surcharger les serveurs de cppfrance ^^

Conclusion :


Vous trouverez la dernière version de la bibliothèque sur mon site Internet (http://test.nicolas.lerme.free.fr) ainsi que deux rapports expliquant le fonctionnement des algorithmes utilisés. En ce qui concerne la documentation, elle peut être générée à l'aide de doxygen.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

vinc1008881
Messages postés
257
Date d'inscription
dimanche 22 août 2004
Statut
Membre
Dernière intervention
29 septembre 2010
-
Vraiment bien, bonne documentation, compilation facile grace aux makefile, des exemples fournit en plus c'est sous liscence GNU/GPL si j'ai bien vu.


Cette bibliothèque permet de réaliser plusieurs opérations :
- Addition matricielle
- Soustraction matricielle
- Multiplication matricielle
- Multiplication d'une matrice par un scalaire
- Division d'une matrice par un scalaire
- Calcul de transposée

Le calcul de déterminants aurait aussi été le bien-venue (méthode du pivot de GAUSS), ainsi que le calcul d'inverse de matrice. Tant qu'on y ai la résolution d'un systeme linaire affine de n equation à p inconnus serait bien aussi, de toute facon toute est lié en algebre linaire et avec une simple fonction on peut faire plusieur chose en même temps
deterniant ---> résolution d'un systeme par CRAMER ----> calcul facile d'un inverse + calcul du noyau ----> theoreme du rang....
Tu devrais aussi rajouter
nicolas66
Messages postés
116
Date d'inscription
mercredi 25 décembre 2002
Statut
Membre
Dernière intervention
4 janvier 2009
-
Disons que je n'ai pas rajouté le calcul du déterminant car ce n'était pas demandé dans le sujet de mon projet. De plus, même sans avoir réfléchi sur l'algorithme, je pense que ca doit être très compliqué à mettre en oeuvre sur des matrices creuses (mais pas impossible :p).

Petite rectification : la bibliothèque est sous license LGPL et non sous license GPL.
Master_pinguin
Messages postés
1
Date d'inscription
samedi 15 avril 2006
Statut
Membre
Dernière intervention
25 juillet 2006
-
"Tant qu'on y ai la résolution d'un systeme linaire affine de n equation à p inconnus serait bien aussi,"

Tout a fait d'accord, une methode de résolution de systèmes linéaires serait tout fait bienvenue... (methode du gradient par ex. ?)

ça permettrait de pouvoir utiliser ton code tel quel pour des calculs elements finis :P

Le seul endroit de ma jeune vie ou j'ai vu des matrices creuses, c'était dans des codes pour des simulation par elements finits... Et le but du jeu est justement, à la fin, d'inverser une grosse matrice remplie à environs 0.2%...

ps: sinon j'ai pas encore eu le temps de fouiller ton code (je poste juste "à chaud" au vu de la remarque deja postée)

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.