1#include <iostream>
2#include <eigen3/Eigen/Eigen>
3
4#define all Eigen::placeholders::all
5
6int main()
7{
8
9 Eigen::MatrixXd a {{2,3,4},
10 {3,-4,5},
11 {1,1,-1}};
12
13 Eigen::VectorXd b {{-1,7,0}};
14
15
16 Eigen::MatrixXd ab(a.rows(), a.cols() + 1);
17 ab << a, b;
18 std::cout << "Matriz estendida:\n" << ab << std::endl;
19
20
21 ab(1,all) -= (ab(1,0) / ab(0,0)) * ab(0,all);
22 ab(2,all) -= (ab(2,0) / ab(0,0)) * ab(0,all);
23 ab(2,all) -= (ab(2,1) / ab(1,1)) * ab(1,all);
24
25 std::cout << "Matriz escalonada:\n" << ab << std::endl;
26
27
28 ab(1,all) -= (ab(1,2) / ab(2,2)) * ab(2,all);
29 ab(0,all) -= (ab(0,2) / ab(2,2)) * ab(2,all);
30 ab(0,all) -= (ab(0,1) / ab(1,1)) * ab(1,all);
31 ab(1,all) /= ab(1,1);
32 ab(2,all) /= ab(2,2);
33 ab(0,all) /= ab(0,0);
34
35 std::cout << "Matriz reduzida:\n" << ab << std::endl;
36
37
38 Eigen::VectorXd x(ab.rows());
39 x << ab(all, ab.cols()-1);
40
41 std::cout << "Solução x = \n" << x << std::endl;
42 return 0;
43}