3.2 連立1次方程式

testeigenlu.cpp

// testeigenlu.cpp --- EIgen::PartialPivLU の利用
// https://eigen.tuxfamily.org/dox/classEigen_1_1PartialPivLU.html

#include <iostream>
#include <cmath>

// #include <Eigen/Dense>
#include <Eigen/Core>
#include <Eigen/LU>
using Eigen::MatrixXd;
using Eigen::VectorXd;
using Eigen::PartialPivLU;
using namespace std;

int main(void)
{
  int n = 2;
  MatrixXd a(n,n);
  VectorXd b(n), x(n);
  PartialPivLU<MatrixXd> lu;
  // 係数行列を決める
  a <<
    1, 2,
    3, 4;
  // まず解 x を決めて
  x(0) = 1.0; x(1) = 2.0;
  // 対応する b を計算する
  b = a * x;
  // A, b を表示
  cout << "a=" << endl << a << endl;
  cout << "b=" << endl << b << endl;
  // LU分解する
  lu.compute(a);
  // 連立一次方程式を解く
  x=lu.solve(b);
  // 結果を表示する
  cout << "x=" << endl <<  x << endl;
}
% g++ -I /usr/local/include testeigenlu.cpp
% ./a.out
a=
1 2
3 4
b=
 5
11
x=
1
2
%



桂田 祐史