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)
- Math .NET Numerics für .NET, Silverlight und Mono (OpenSource)
- Numerische Bibliotheken mit extremer Optimierung (kommerziell, sehr vollständig)
- IL Numerics (kommerziell)
- Die numerische FinMath-Bibliothek von Deltix (kommerziell, verwendet die Intel® Math Kernel Library (MKL) und Intel® Integrated Performance Primitives (IPP))
- Leichte schnelle Matrixklasse in C # (Strassen-Algorithmus, LU-Zerlegung)
double[,]
Typ.Antworten:
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 ...).
quelle
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.
quelle
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 .
quelle
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.
quelle