2010-02-25 16 views
61

Potrzebuję biblioteki C# do radzenia sobie z macierzami. Powinien zaimplementować dekompozycję osobliwą, inwersję macierzy, itp.Zalecenie dla biblioteki C# Matrix

Używałem wcześniej CSML, ale to nie implementuje niektórych funkcji, których potrzebuję.

Niektóre funkcje to:
Wartość Singular rozkładu
Matrix inwersja
śladowe
Determinanty

Sugerowane biblioteki (z odpowiedziami)

(większość z nich realizować funkcje określone powyżej)

+4

Warto wspomnieć o funkcjach, których CSML nie spełnia. – Nick

+2

http://accord-framework.net/ Implementuje operacje macierzy jako metody rozszerzania typu "double [,]". –

Odpowiedz

27

Math.NET Numerics jest bardzo ładne, jeśli obsługuje operacje, które chcesz. Starsze Math.Net Iridium nadal obsługuje więcej opcji. Ponadto, dnAnalytics jest całkiem niezły, ale nie jest już rozwijany. (To, podobnie jak Iridium, jest łączone w Math.NET Numerics.)

Po stronie komercyjnej istnieje kilka bardzo dobrych, solidnych opcji. Model Extreme Optimization Numerical Libraries działa bardzo dobrze. Biblioteka Visual Numerics również działa bardzo dobrze (chociaż z dystrybucją opartą na tantiecie ...).

+0

Iridium załatwi sprawę. Nie mogłem użyć klasy macierzy z Math.NET, ponieważ jest abstrakcyjna, więc musiałem ją wyprowadzić. dobrze ? – jose

+1

Zapewniają konkretne implementacje, ale ponieważ Math.NET Numerics nie jest kompletny, niektóre implementacje nie są jeszcze ukończone (jeszcze). –

+0

Istnieją dwie konkretne klasy: Matrix m = new DenseMatrix (...) lub nowa SparseMatrix (...) w zależności od Twoich potrzeb. –

6

Wierzę, że Math.NET ma większość cech, o których wspomniałeś. Yuu może chcieć na to spojrzeć i sprawdzić, czy pasuje do twoich potrzeb.

Możesz zobaczyć Iridium samples, aby zobaczyć składnię i przykładowy kod.

2

Oprócz bibliotek wspomnianych w innych wpisach mogę powiedzieć kilka ciepłych słów o bibliotece FinMath. Jest to raczej nowa biblioteka, ale według mojego doświadczenia ma wiele zalet. Ta biblioteka jest bardzo łatwa. Po pierwsze, ma tylko jeden plik wykonywalny (* .dll) dla 32-bitowych i 64-bitowych systemów operacyjnych. Po drugie, jest oparty na znanej bibliotece Intel Math Kernel Library i dlatego zapewnia bardzo dobrą wydajność. Zarządzany API .NET udostępniany przez tę bibliotekę jest również bardzo obszerny i elastyczny. Jest to jednak oprogramowanie własne i kosztuje znaczną ilość pieniędzy. Brakuje również niektórych funkcji (np. W porównaniu z NMath z oprogramowania CenterSpace). W każdym razie warto spróbować.

5

Bardzo często używam ILNumerics. Zrobił też kilka wkładów do projektu. Jest to jedyna znana biblioteka, która nie spędza połowy czasu procesora w GC dla serious computations. Jest szybki i dojrzały. Zobacz pełną wersję: feature list.

+1

+1 ILNumerics ma wszystkie funkcje innych bibliotek. Ale jest znacznie szybszy. –