Am besten C++ Matrix-Bibliothek für dünnbesetzte unitären Matrizen
Ich bin auf der Suche nach einem guten (im besten Fall aktiv gepflegt) C++ matrix-Bibliothek. Dabei sollte es werden vorgefertigte, denn ich möchte an einem Komplex von rationals als numerischer Typ. Die Matrizen, welche ich beschäftige mich mit sind hauptsächlich lichten und einheitlichen.
Können Sie bitte vorschlagen, Bibliotheken und geben auch eine kleine Erklärung, warum Sie zu benutzen, weil ich weiß, wie Sie zu finden, aber ich kann mich nicht wirklich entscheiden, was ist für mich passend, da fehlt mir die Erfahrung mit Ihnen.
EDIT:
Die wichtigsten Operationen, die ich bin den Umgang mit - matrix-Multiplikation, die Skalare Multiplikation mit einem Vektor und kronecker-Produkt. Die Größe der Matrizen ist exponentiell, und ich möchte zumindest in der Lage sein Umgang mit Matrizen bis zu 1024x1024 Einträge.
- Was brauchen Sie, um die matrix-Bibliothek für? Basic linear algebra, Solver, oder ...? Wie groß sind deine Matrizen?
- Die meisten der Zeit, die ich Tue, matrix-Multiplikation, Skalare Multiplikation und die Verwendung des kronecker-Produkt. Die Matrizen können sehr wenig, zumindest ich möchte in der Lage sein Umgang mit 1024x1024 Matrizen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Viele Leute, die "ernsthaft" matrix-Kram, verlassen Sie sich auf BLAS, hinzufügen LAPACK /ATLAS (normale Matrizen) oder UMFPACK (sparse matrices) für erweiterte math. Der Grund dafür ist, dass dieser code ist gut-geprüft, stabil, zuverlässig und Recht schnell. Außerdem, Sie können Sie kaufen direkt von einem Lieferanten (z.B. Intel MKL) abgestimmt, in Richtung Ihrer Architektur, sondern auch erhalten Sie kostenlos. uBLAS erwähnt in Manuel ' s Antwort ist wahrscheinlich der standard-C++ - BLAS-Implementierung. Und wenn Sie etwas brauchen, wie LAPACK später, gibt es Bindungen zu tun.
Jedoch keines dieser standard-Bibliotheken (BLAS /LAPACK /ATLAS oder uBLAS + Bindungen + LAPACK /ATLAS) Zecken Ihre box als vorgefertigte und einfach zu verwenden (es sei denn, uBLAS, ist alles, was Sie jemals brauchen). Eigentlich, muss ich zugeben, dass ich eher zu nennen die C /Fortran-interface direkt, wenn ich eine BLAS /LAPACK-Implementierung, da ich oft nicht viel zu sehen, den zusätzlichen Vorteil, dass die uBLAS + Bindungen Kombination.
Wenn ich einen brauchen eine einfache, Allzweck-C++ matrix-Bibliothek, Neige ich zum Eigen (ich verwendet, um zu verwenden NewMat in der Vergangenheit). Vorteile:
Nachteile (IMO):
Edit: Die kommende Eigen 3.1 können einige Funktionen der Intel MKL (oder einem anderen BLAS /LAPACK-Implementierung).
prod
war deutlich langsamer bei größeren dichten Matrizen als ATLASgemm
(IIRC, Intel MKL überlastungenprod
mitgemm
fordert aus diesem Grund).Boost uBLAS, denn es ist vergangen, das Boost-filter.
Gibt es ein paar template-Bibliotheken, die Unterstützung von sparse-Matrizen, so ist es wirklich schwer zu kommen mit einer besseren Begründung, wenn Sie nicht mehr spezifisch über Ihre Bedürfnisse.
Sollten Sie auch versuchen, MLT und HASEM Matrix C++ - Bibliothek. Der Letzte ist sehr gut dokumentiert.