2010-02-25 19 views
61

Ich brauche eine C# -Bibliothek, um mit Matrizen umzugehen. Es sollte Singulärwertzerlegung, Matrixinversion usw. implementieren.Empfehlung für C# -Matrix-Bibliothek

Ich habe zuvor CSML verwendet, aber dies implementiert nicht einige der Funktionen, die ich brauche.

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

Empfohlene Bibliotheken (von Antworten)

(die meisten von ihnen implementieren, um die oben genannten Merkmale)

+4

Es kann hilfreich sein, die Funktionen zu nennen, die CSML nicht benötigt. – Nick

+2

http://accord-framework.net/ Implementiert Matrixoperationen als Erweiterungsmethoden vom Typ double [,] '. –

Antwort

27

Math.NET Numerics ist sehr nett, wenn es die Operationen unterstützt, die Sie wünschen. Das ältere Math.Net Iridium unterstützt noch mehr Optionen. Auch dnAnalytics ist ziemlich nett, 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 Extreme Optimization Numerical Libraries funktionieren sehr gut. Die Bibliothek Visual Numerics funktioniert auch sehr gut (obwohl mit einer Royalty-basierten Verteilung ...).

+0

Iridium wird den Trick machen. Ich könnte die Matrix-Klasse von Math.NET nicht verwenden, da sie abstrakt ist, also musste ich sie ableiten. Recht ? – jose

+1

Sie bieten konkrete Implementierungen, aber da Math.NET Numerics nicht abgeschlossen ist, sind einige Implementierungen (noch) nicht abgeschlossen. –

+0

Es gibt zwei konkrete Klassen: Matrix m = neue DenseMatrix (...) oder neue SparseMatrix (...), je nach Ihren Bedürfnissen. –

6

Ich glaube, dass Math.NET die meisten der von Ihnen erwähnten Funktionen hat. Yuu möchte es vielleicht sehen und sehen, ob es Ihren Bedürfnissen entspricht.

Sie können einen Blick auf die Iridium samples werfen, um die Syntax und den Beispielcode zu sehen.

2

Zusätzlich zu den Bibliotheken in anderen Posts erwähnt kann ich ein paar warme Worte über FinMath Bibliothek sagen. Es ist eine ziemlich neue Bibliothek, aber nach meiner Erfahrung hat es 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 basiert es auf der bekannten Intel Math Kernel Library und bietet daher eine sehr gute Leistung. Managed .NET API von dieser Bibliothek bereitgestellt ist auch sehr umfangreich und flexibel. Aber es ist proprietäre Software und kostet viel Geld. Es fehlt auch einige Funktionalität (z. B. im Vergleich zu NMath von CenterSpace Software). Wie auch immer, es lohnt sich, es auszuprobieren.

5

Ich habe ILNumerics viel verwendet. Hat auch einige Beiträge zu dem Projekt beigetragen. Es ist die einzige mir bekannte Bibliothek, die nicht die Hälfte der CPU-Zeit in GC für serious computations verbraucht. Es ist schnell und ausgereift. Siehe die vollständige feature list.

+1

+1 ILNumerics verfügt über alle Funktionen anderer Bibliotheken. Aber es ist viel schneller. –

Verwandte Themen