Система линейных уравнений в С++?

Мне нужно решить систему линейных уравнений в моей программе. Существует ли простая библиотека линейной алгебры для С++, предпочтительно состоящая из нескольких заголовков? Я искал около часа, и все те, что я нашел, нуждаются во взаимодействии с 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: Доступны базовые функциональные возможности (например, сложение и умножение матрицы),    но таких вещей, как собственное разложение, не будет. Матричное умножение (в основном    для больших матриц) будет не так быстро.