Empfehlung für C # Matrix Library [geschlossen]

72

Ich brauche eine C # -Bibliothek, um mit Matrizen umgehen zu können. Es sollte eine Singularwertzerlegung, eine Matrixinversion usw. Implementieren

Ich habe bereits CSML verwendet , aber dies implementiert einige der Funktionen, die ich benötige, nicht.

Einige der Merkmale sind:
Singulärwertzerlegung
Matrix Inversion
Trace
Bestimmungsfaktoren

Vorgeschlagene Bibliotheken (aus Antworten)

(Die meisten von ihnen implementieren die oben genannten Funktionen)

Jose
quelle
4
Es kann hilfreich sein, die Funktionen zu erwähnen, die CSML nicht benötigt.
Nick
2
accord-framework.net Implementiert Matrixoperationen als Erweiterungsmethoden vom double[,]Typ.
Kamil Szot
2
geschlossen als nicht konstruktiv. 69.620 Aufrufe.
user875234
2
Schauen Sie sich NumSharp an , es bietet die .NET-Bindungen von numpy.
Eduardo Pignatelli

Antworten:

34

Math.NET Numerics ist sehr schön, wenn es die gewünschten Operationen unterstützt. Das ältere Math.Net Iridium unterstützt noch mehr Optionen. Auch dnAnalytics ist ganz nett, wird aber nicht mehr entwickelt. (Es wird ebenso wie Iridium in Math.NET Numerics zusammengeführt.)

Auf der kommerziellen Seite gibt es einige sehr gute, robuste Optionen. Die numerischen Bibliotheken für extreme Optimierung funktionieren sehr gut. Die Visual Numerics- Bibliothek funktioniert ebenfalls sehr gut (obwohl mit einer lizenzgebührenbasierten Distribution ...).

Reed Copsey
quelle
Iridium wird den Trick machen. Ich konnte die Matrixklasse von Math.NET nicht verwenden, da sie abstrakt ist, also musste ich sie ableiten. richtig ?
Jose
1
Sie bieten konkrete Implementierungen, aber da Math.NET Numerics nicht vollständig ist, sind einige der Implementierungen (noch) nicht abgeschlossen.
Reed Copsey
Es gibt zwei konkrete Klassen: Matrix m = neue DenseMatrix (...) oder neue SparseMatrix (...), je nach Ihren Anforderungen.
Johan Tidén
Ich würde auch dotNumerics einen Gruß aussprechen, der weit über die einfache lineare Algebra hinausgeht. Zum Beispiel hat es Optimierer wie L-BGFS und Differentialgleichungslöser, dotnumerics.com/NumericalLibraries/DifferentialEquations/…
Shital Shah
Siehe auch diese Antwort: stackoverflow.com/questions/4159385/…
Shital Shah
8

Ich glaube, dass Math.NET die meisten Funktionen hat, die Sie erwähnen. Yuu möchte es sich vielleicht ansehen und sehen, ob es Ihren Bedürfnissen entspricht.

Sie können sich die Iridium-Beispiele ansehen, um die Syntax und den Beispielcode zu sehen.

LBushkin
quelle
5

Ich habe ILNumerics viel benutzt. Hat auch einige Beiträge zum Projekt geleistet. Es ist bekanntlich die einzige mir bekannte Bibliothek, die nicht die Hälfte der CPU-Zeit in GC für ernsthafte Berechnungen verbringt . Es ist schnell und ausgereift. Siehe die vollständige Funktionsliste .

user492238
quelle
1
+1 ILNumerics bietet alle Funktionen anderer Bibliotheken. Aber es ist viel schneller.
Paul Wendler
2

Zusätzlich zu den in anderen Beiträgen erwähnten Bibliotheken kann ich ein paar warme Worte über die FinMath- Bibliothek sagen . Es ist eine ziemlich neue Bibliothek, aber meiner Erfahrung nach hat sie mehrere Vorteile. Es ist sehr einfach, diese Bibliothek zu benutzen. Erstens hat es nur eine ausführbare Datei (* .dll) für 32-Bit- und 64-Bit-Betriebssysteme. Zweitens baut es auf der bekannten Intel Math Kernel Library auf und bietet daher eine sehr gute Leistung. Die von dieser Bibliothek bereitgestellte verwaltete .NET-API ist ebenfalls sehr umfangreich und flexibel. Es handelt sich jedoch um proprietäre Software, die viel Geld kostet. Es fehlen auch einige Funktionen (z. B. im Vergleich zu NMath von CenterSpace Software). Auf jeden Fall lohnt es sich, es zu versuchen.

vharavy
quelle