URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9443
[ Назад ]

Исходное сообщение
"C/C++ solve matric A*X=B"

Отправлено handler2006 , 23-Апр-12 14:00 
Здравствуйте!
Как ни стараюсь, самостоятельно найти библиотеку для решения СЛАУ не смог. Искал  в boost (там такого нет) и alglib(есть метод но почему-то не компилится)
Вы не могли бы посоветовать мне хорошую библиотеку для работы с матрицами (решение СЛАУ, нахождения собственных чисел, векторов и т.д.)
Спасибо,

Содержание

Сообщения в этом обсуждении
"C/C++ solve matric A*X=B"
Отправлено DeadMustdie , 24-Апр-12 10:26 
http://arma.sourceforge.net/
http://www.netlib.org/lapack/
http://seldon.sourceforge.net/

отчасти
http://www.boost.org/doc/libs/1_49_0/libs/numeric/ublas/doc/...

Google в помощь!


"C/C++ solve matric A*X=B"
Отправлено Andrey Mitrofanov , 24-Апр-12 10:38 
ответ неполный. не раскрыты темы "как решать уравнение" и "как программить".</.>

"C/C++ solve matric A*X=B"
Отправлено handler2006 , 24-Апр-12 11:23 
Знаю, что вопрос глупый и заезженный, однако, самостоятельно, зная про boost, google, lapack, etc. не смог найти ответ

"C/C++ solve matric A*X=B"
Отправлено handler2006 , 25-Апр-12 12:11 
Всем спасибо за участие - со скрипом разобрался (то есть написал функцию, но еще не проверял правильность вычислений).
Далее привожу рабочий пример кода функции, решающей СЛАУ на boost:


#include <boost/numeric/ublas/lu.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/vector.hpp>

using namespace boost::numeric::ublas;

template<class T>
void solve(matrix<T> &A, vector<T> &X, vector<T> &B)
{
  permutation_matrix<T> P(B.size());
  lu_factorize(A,P);
  X = B;
  lu_substitute(A,P,X);
}



"C/C++ solve matric A*X=B"
Отправлено deadmustdie , 14-Май-12 14:51 
> ответ неполный. не раскрыты темы "как решать уравнение" и "как программить".</.>

Тему сисек я и вовсе даже не пытался раскрыть ;)


"C/C++ solve matric A*X=B"
Отправлено handler2006 , 14-Май-12 16:06 
Странно, что в boost нет явного метода solve(), как, к примеру, в armadillo, ведь последняя написана на boost, Как, собственно нет функций получения обратных матриц и прочих тривиальных распространенных матричных вычислений.