sparse matrix bibliothèque C++
Est-il une matrice creuse de la bibliothèque qui peut faire ces:
- résoudre des systèmes d'équations algébriques linéaires
- des opérations de soutien, comme la matrice de la matrice de/nombre de multiplication/addition/soustraction,la matrice de transposition, obtenir une ligne/colonne d'une matrice,et ainsi de suite
- la taille de la matrice peut être 40k*40k ou plus,à l'instar de 250*250
- rapide
- peut être utilisé dans Windows
Quelqu'un peut recommander un certain nombre de bibliothèques pour moi?
Si vous le recommande, merci de me dire les avantages et les inconvénients de celui-ci, et la raison pour laquelle vous le recommander.
Par le chemin,j'ai cherché de nombreuses sparse matrix bibliothèques sur internet et testé quelques uns d'entre eux. J'ai trouvé que chacun d'entre eux seulement pris en charge très peu d'opérations(beaucoup d'entre eux ne peut résoudre des systèmes d'équations algébriques linéaires et faire de la matrice-vecteur de multiplication) .J'ai enfin trouvé un nommé SparseLib++. Il n'a pas le soutien de nombreuses opérations, que ce soit.J'ai donc rajouté de la matrice de base des opérations. Maintenant, il fonctionne. Cependant, je viens d'entendre que SparseLib++ était trop vieux et pas très rapide. Mais mon projet est basé sur SparseLib++ et j'ai passé beaucoup de travail sur SparseLib++. Donc, je me demande si les, essayez avec une autre matrice creuse de la bibliothèque ou pas.
OriginalL'auteur Li Ming | 2013-06-21
Vous devez vous connecter pour publier un commentaire.
http://www.mcs.anl.gov/petsc/ a beaucoup de construit en algèbre linéaire et ca distribuer des matrices sur un cluster lors de vos données est grand. Il y a également un suivi actif sur https://scicomp.stackexchange.com/ lorsque vous avez des questions techniques. L'inconvénient est que la courbe d'apprentissage est un peu raide.
OriginalL'auteur dranxo
Un très liste détaillée des comparaisons
Recommandations pour une utilisable, rapide C++ bibliothèque de matrice?
Ce sont les plus largement utilisés en C++ vecteur/matrice de mathématiques/algèbre linéaire
bibliothèques et de leur coût et des avantages des compromis?
Quand il vient à grande échelle éparses choses, personnellement, j'utilise le Harwell bibliothèque de sous-programmes. Il est écrit en Fortran et c'est une douleur à l'interface avec le C++. Néanmoins, je l'utilise car il est robuste et rapide.
LGV est open-source mais avec une licence restrictive qui peut ne pas être approprié pour vous. Quelles activités avez-vous besoin que la LGV ne peut pas faire? Gardez à l'esprit que la LGV est écrit en FORTRAN et à l'aide de C++ est une grande douleur.
Par exemple, j'ai besoin de pour obtenir l'inverse de 3*3 bloc diagonale d'un 3n*3n matrice. C'est-à-dire, pour une 3n*3n de la matrice A, A peut être décomposé comme ceci: A=D-L-U, où D est de 3*3 bloc-diagonale. J'ai besoin de calculer l'inverse de D. je suppose que la LGV ne peut pas le faire efficacement. Cependant, comme vous l'avez souligné que la LGV est écrit en FORTRAN, je pense que je devrais essayer une autre bibliothèque.
Oui, cela ressemble à un algorithme spécial. Eh bien, bonne chance tout de même!
OriginalL'auteur Ali
Boost serait un bon endroit pour commencer. Les bibliothèques sont gratuites, bien pris en charge, bien documenté, rapide et portable.
OriginalL'auteur LogicG8
Eigen bibliothèque a un bon soutien pour les renforts de manipulation de matrice, et la plus attrayante de la fonctionnalité, c'est que son style est comme Matlab.
OriginalL'auteur kevin