2010-02-25 3 views
61

Мне нужна библиотека C# для работы с матрицами. Он должен реализовывать разложение по сингулярным значениям, инверсию матрицы и т. Д.Рекомендация для библиотеки матриц C#

Раньше я использовал CSML, но это не реализует некоторые функции, которые мне нужны.

Некоторые из особенностей:
сингулярного разложения
Матрица инверсии
Микроэлементы
Детерминанты

Предлагаемые библиотеки (из ответов)

(большинство из них реализовать функции, указанные выше)

+4

Это может помочь указать функции, которые CSML не имеет, что вам нужно. – Nick

+2

http://accord-framework.net/ Выполняет операции с матрицами как методы расширения типа 'double [,]'. –

ответ

27

Math.NET Numerics очень приятно, если он поддерживает операции, которые вы хотите. Старший Math.Net Iridium по-прежнему поддерживает больше возможностей. Кроме того, dnAnalytics довольно приятный, но уже не разрабатываемый. (Он, как и Иридиум, сливается с Math.NET Numerics.)

С коммерческой стороны есть некоторые очень хорошие, надежные варианты. Extreme Optimization Numerical Libraries работают очень хорошо. Библиотека Visual Numerics также работает очень хорошо (хотя с распределением на основе роялти) ....

+0

Иридиум сделает трюк. Я не мог использовать матричный класс из Math.NET, поскольку он абстрактный, поэтому мне нужно было его получить. правильно ? – jose

+1

Они предоставляют конкретные реализации, но поскольку Math.NET Numerics не является полной, некоторые из реализаций не завершены (пока). –

+0

Существует два конкретных класса: Matrix m = new DenseMatrix (...) или новая SparseMatrix (...) в зависимости от ваших потребностей. –

6

Я считаю, что у Math.NET есть большинство функций, которые вы упомянули. Юу может захотеть взглянуть на него и посмотреть, соответствует ли он вашим потребностям.

Вы можете посмотреть на Iridium samples, чтобы увидеть синтаксис и пример кода.

2

В дополнение к библиотекам, упомянутым в других сообщениях, я могу сказать несколько теплых слов об FinMath библиотеке. Это скорее новая библиотека, но, по моему опыту, она имеет ряд преимуществ. Очень просто использовать эту библиотеку. Во-первых, он имеет только один исполняемый файл (* .dll) для 32-разрядных и 64-разрядных операционных систем. Во-вторых, он построен на основе хорошо известной библиотеки Intel Math Kernel Library и поэтому обеспечивает очень хорошую производительность. Управляемый .NET API, предоставляемый этой библиотекой, также очень обширен и гибкий. Но это проприетарное программное обеспечение и стоит значительная сумма денег. Он также не имеет некоторых функций (например, по сравнению с NMath от Software CenterSpace). Во всяком случае, стоит попробовать.

5

Я использую ILNumerics много. Также внес некоторые вклады в проект. Это знаю, это единственная библиотека, которую я знаю, которая не тратит половину времени процессора в GC для serious computations. Его быстрый и зрелый. См. Полный список feature list.

+1

+1 ILNumerics обладает всеми функциями других библиотек. Но это намного быстрее. –

Смежные вопросы