//整理by RobinKin
#include "mtl/matrix.h"
#include "mtl/mtl.h"
#include "mtl/utils.h"
#include "mtl/linalg_vec.h"
/*
x1=8;
2*x1+2*x2=43;
4*x2+5*x3=86;
6*x3+7*x4=137
结果:
[x1,x2,x3,x4]= [8,9,10,11,]
/*
Sample Output
A:
[
[1,],
[2,3,],
[0,4,5,],
[0,0,6,7,],
]
b:
[8,43,86,137,]
A^-1 * b:
[8,9,10,11,]
*/
using namespace mtl;
typedef matrix< double, triangle<lower>, banded<>, row_major>::type Matrix;
//typedef dense1D<double> Vector;
typedef external_vec<double> Vector;
int
main()
{
const int N = 4;
Matrix A(N, N);
set_diagonal(A, 1);
//C 1 8
//C A = 2 3 b = 43
//C 4 5 86
//C 6 7 137
A(1,1) = 3; A(2,2) = 5; A(3,3) = 7;
A(1,0) = 2; A(2,1) = 4; A(3,2) = 6;
double db[] = { 8, 43, 86, 137 };
Vector b(db, N);
std::cout << "A:" << std::endl;
print_row(A);
std::cout << "b:" << std::endl;
print_vector(b);
tri_solve(A, b);
std::cout << "A^-1 * b:" << std::endl;
print_vector(b);
return 0;
}