サブロウ丸

主にプログラミングと数学

[ Eigen ] long double 型 のMatrix, Vectorの宣言

Eigen とは C++ の行列演算ライブラリ[1] です. 暗黒通信団による Eigen メモ [2]. これさえ読めば基本機能は大体使えます.

MatrixXdや, MatrixXi, VectorXd を使えば, 要素がdoubleやint型の行列やベクトルが扱えます ([2] を参照してください)が, Eigenは純粋なテンプレートライブラリであるので, 型もユーザーがカスタマイズできます [3].

これを参考にして, 例えば long double 型の行列を作成したいならば, 下記のように書けば良いことがわかります.

#include <iostream>
#include <eigen3/Eigen/Dense>
using namespace Eigen;
using namespace std;

typedef Matrix<long double,Dynamic,Dynamic,RowMajor> MatrixXld;
typedef Matrix<long double,1,Dynamic> VectorXld;

int main(){
  MatrixXld B;
  VectorXld V;
  int n = 3;
  B.resize(n,n);
  V.resize(n);
  for(int i =0; i<n; i++) B(i,i)=1;
  for(int i =0; i<n; i++) V(i) = i;
  cout << B << endl;
  cout << V << endl;
  return 0;
}

出力

1 0 0
0 1 0
0 0 1
0 1 2