Рекомендация для библиотеки матриц С#
Мне нужна библиотека С# для работы с матрицами. Он должен реализовывать разложение сингулярных значений, инверсию матрицы и т.д.
Ранее я использовал CSML, но это не реализует некоторые функции, которые мне нужны.
Некоторые из функций:
Сингулярное разложение значений
Матричная инверсия
Трассировка
Детерминанты
Рекомендуемые библиотеки (из ответов)
(большинство из них реализуют функции, указанные выше)
Ответы
Ответ 1
Math.NET Numerics очень хорошо, если он поддерживает операции, которые вы хотите. Старший Math.Net Iridium по-прежнему поддерживает больше возможностей. Кроме того, dnAnalytics довольно приятный, но уже не разрабатываемый. (Он, как и Иридиум, объединяется в Math.NET Numerics.)
На коммерческой стороне есть очень хорошие, надежные варианты. Extreme Optimization Numerical Libraries работают очень хорошо. Библиотека Visual Numerics также работает очень хорошо (хотя с распределением на основе роялти).
Ответ 2
Я считаю, что Math.NET имеет большинство функций, которые вы упоминаете. Yuu может захотеть взглянуть на него и посмотреть, подходит ли оно вашим потребностям.
Вы можете посмотреть образцы Iridium, чтобы увидеть синтаксис и пример кода.
Ответ 3
Я часто использовал ILNumerics. Также внес некоторые вклады в проект. Это знаю, это единственная библиотека, которую я знаю, которая не тратит половину времени процессора в GC для серьезных вычислений. Его быстрый и зрелый. Полный список .
Ответ 4
В дополнение к библиотекам, упомянутым в других сообщениях, я могу сказать несколько теплых слов о FinMath библиотеке. Это скорее новая библиотека, но, по моему опыту, она имеет ряд преимуществ. Очень просто использовать эту библиотеку. Во-первых, он имеет только один исполняемый файл (*.dll) для 32-разрядных и 64-разрядных операционных систем. Во-вторых, он построен на основе хорошо известной библиотеки Intel Math Kernel Library и, следовательно, обеспечивает очень хорошую производительность. Управляемый .NET API, предоставляемый этой библиотекой, также очень обширен и гибкий. Но это проприетарное программное обеспечение и стоит значительная сумма денег. Он также не обладает некоторой функциональностью (например, по сравнению с NMath от Software CenterSpace). В любом случае, стоит попробовать.