2008年11月14日金曜日

行列のできるプログラミング言語(3)

C++編(2)


■(鬼の)liboctave



#include <octave/config.h>
#include <octave/Matrix.h>
#include <iostream>
using namespace std;

int main(int argc, char**argv)
{
double m[][3] = { { 3, -4, 2 }, { 2, 5, 3 }, { -2, 3, -2 } };
Matrix A(3,3);
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
A(i,j) = m[i][j];
// 行列の表示
cout << "matrix A:" << endl << A << endl;
// 逆行列の表示
cout << "inv(A):" << endl << A.inverse() << endl;
// 元の行列との積の計算
cout << "A*inv(A)" << endl << A*A.inverse() << endl;
// ついでに固有値分解(笑)
EIG eig(A);
cout << "Eigen Vector" << endl << eig.eigenvectors() << endl;
cout << "Eigen Values" << endl << eig.eigenvalues() << endl;

return 0;
}

0 件のコメント: