# Ublas :

From: Piotr Stanczyk (piotr-s_at_[hidden])
Date: 2006-05-18 06:20:15

Hi all,

this a newbie question so please bear with me.

I am simply trying to solve a bog standard linear system: Ax=b

I have found this in the doc pages:

Examples

#include <boost/numeric/ublas/triangular.hpp>
#include <boost/numeric/ublas/io.hpp>

int main () {
using namespace boost::numeric::ublas;
matrix<double> m (3, 3);
vector<double> v (3);
for (unsigned i = 0; i < std::min (m.size1 (), v.size ()); ++ i) {
for (unsigned j = 0; j <= i; ++ j)
m (i, j) = 3 * i + j + 1;
v (i) = i;
}

std::cout << solve (m, v, lower_tag ()) << std::endl;
std::cout << solve (v, m, lower_tag ()) << std::endl;
}

but I have no idea what the args to solve are, looking through the hpp
is a little daunting to say the least, and I am not getting the correct
values back on most of my test cases ....

Here is a trivial example, 1st solve is fine

#include <boost/numeric/ublas/triangular.hpp>
#include <boost/numeric/ublas/io.hpp>

int main () {
using namespace boost::numeric::ublas;

matrix<double> m (3, 3);
vector<double> v (3);
vector<double> v_1 (3);
vector<double> v_2 (3);
vector<double> v_3 (3);

m(0,0) = 0.158564; m(0,1) = 0.0780387; m(0,2) = 0.0534636;
m(1,0) = 0.498959; m(1,1) = 0.28208; m(1,2) = 0.206461;
m(2,0) = 0.112965; m(2,1) = 0.18; m(2,2) = 0.311839;
std::cout << "m =\n" << m << std::endl;

v(0) = m(0,0); v(1) = m(1,0); v(2) = m(2,0);
std::cout << "v =\n" << v << std::endl;

v_1=solve (m, v, lower_tag ());
std::cout << "v1:\n" << v_1 << std::endl;
std::cout << "Check Solve:" << std::endl;

v_3 = prod (m, v_1);
std::cout <<v - v_3 << std::endl;

v(0) = m(0,1); v(1) = m(1,1); v(2) = m(2,1);
std::cout << "v =\n" << v << std::endl;

v_1=solve (m, v, lower_tag ());
std::cout << "v1:\n" << v_1 << std::endl;
std::cout << "Check Solve:" << std::endl;

v_3 = prod (m, v_1);
std::cout <<v - v_3 << std::endl;

}

Can anyone help me?

Thanks

Piotr