Система линейных уравнений в С++?
Мне нужно решить систему линейных уравнений в моей программе. Существует ли простая библиотека линейной алгебры для С++, предпочтительно состоящая из нескольких заголовков? Я искал около часа, и все те, что я нашел, нуждаются во взаимодействии с Linux, компиляции DLL в MinGW и т.д. И т.д. (Я использую Visual Studio 2008.)
Ответы
Ответ 1
Я думаю, что Eigen - это то, что вы ищете.
http://eigen.tuxfamily.org/index.php?title=Main_Page
Это библиотека только для заголовков и компиляция на многих компиляторах. Он даже использует экзотические сборки для более быстрой математики.
Это страница, на которой показан линейный решатель api.
http://eigen.tuxfamily.org/dox-2.0/TutorialAdvancedLinearAlgebra.html
В нем есть несколько решателей с простым api.
Ответ 2
Boost имеет некоторые основные свойства линейной алгебры.
Ответ 3
Вы можете использовать привязки С++ LAPACK. Быстрый google включил эту ссылку в некоторые библиотеки LAPACK для Windows. В зависимости от того, насколько велики ваши системы, все это может быть излишним.
Ответ 4
Я большой поклонник Armadillo, но ваш компилятор может быть проблемой здесь в соответствии с
конец страницы загрузки:
Windows
Разработка и тестирование До сих пор Армадилло осуществлялось главным образом на UNIX-подобных платформах, однако там должна быть небольшая платформа или вообще отсутствует конкретный код. Хотя рудиментарные тесты были сделаны на машине Windows, разработчики заинтересованы в слушании насколько хорошо Армадилло работает больше тщательные испытания.
Если у вас возникли проблемы с MS Visual С++ 2008 Express Edition ' компилятор (из-за его неполного поддержка стандарта С++), вы можете хочу попробовать следующую альтернативу бесплатные компиляторы:
- Компилятор Intel С++
- GCC (часть MinGW)
- GCC (часть CygWin)
Стоит попробовать, так как это хорошо обозначенная (и в основном шаблонная) библиотека.
В противном случае, попробуйте Eigen2, в котором указан ваш компилятор.
Изменить: В ответ на комментарий Armadillo не требует Lapack, но работает лучше с ним (и еще лучше с настроенным Blas):
Q: Какие еще библиотеки мне нужны, чтобы в полной мере использовать Armadillo?
A: Armadillo может работать без внешних библиотек. Однако рекомендуется установите библиотеки LAPACK и ATLAS, чтобы получить добавленную функциональность. Армадилло будет использовать процедуры ATLAS вместо LAPACK, где это возможно.
В: Насколько хорошо Армадилло работает без LAPACK/ATLAS?
A: Доступны базовые функциональные возможности (например, сложение и умножение матрицы), но таких вещей, как собственное разложение, не будет. Матричное умножение (в основном для больших матриц) будет не так быстро.