User Tools

Site Tools


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