boost
A biblioteca boost deve ser instalada com o seguinte comando:
sudo apt-get install libboost-dev libboost-all-dev libboost-system-dev
Caso tenha interesse em instalar as bindings, que são interfaces criadas para usar os solvers do lapack direto com o boost, faça o download utilizando o comando:
svn co https://svn.boost.org/svn/boost/sandbox/numeric_bindings/
Copie as pastas boost e libs para a pasta onde o boost foi instalado. Por fim, copie o conteúdo do arquivo Jamroot baixado para o arquivo Jamroot da pasta de instalação do boost.
Para que essas funções possam ser utilizadas, é necessário ter previamente instalado a biblioteca do ublas/lapack, e na hr de compilar adicionar a seguinte linha ao comando:
-I dir/pasta-onde-o-boost-foi-instalado
Segue um exemplo de utilização do solver gesv do lapack para matrizes densas gerais:
#include <boost/numeric/ublas/matrix.hpp> // importa o tipo matrix do boost #include <boost/numeric/ublas/vector.hpp> // importa o tipo vector do boost #include <boost/numeric/bindings/ublas/matrix.hpp> // importa as bindings do tipo matrix do boost #include <boost/numeric/bindings/ublas/vector.hpp> // importa as bindings do tipo vector do boost #include <boost/numeric/bindings/lapack/driver/gesv.hpp> // importa as bindings do solver gesv int main() { // Definição da matriz A, vetor de solução b e vetor de pivoteamento c boost::numeric::ublas::matrix<double, boost::numeric::ublas::column_major> A(3, 3, 0.0); boost::numeric::ublas::vector<double> b(3, 0.0); boost::numeric::ublas::vector<int> c(3); //Atribuição de valores A(0, 0) = 1.0; A(1, 1) = 2.0; A(2, 2) = 1.0; A(0, 1) = -1.0; A(1, 0) = -1.0; b(0) = 1.0; b(1) = 2.0; b(2) = 3.0; //Chamada do solver boost::numeric::bindings::lapack::gesv(A, c, b); std::cout <<b(0) <<", " <<b(1) <<", " <<b(2) <<std::endl; std::cin.get(); return 0; }
boost.txt · Last modified: by giovane