(2019年9月15日)
■使用ソフト
・Visual Studio Community 2019
■言語
・C/C++
■Windows SDK バージョン
・10.0.17763.0
※Windows SDK バージョンの変更方法
■使用ライブラリ
・Eigen 3.3.7
※Eigen行列計算ライブラリ導入方法
■手順
1.コンソールアプリを作成する。
新しいプロジェクトの作成→コンソールアプリ→プロジェクト名と場所を指定して作成
2.C++ファイル(.cpp)を以下のとおり変更する。
#include <iostream>
#include <Eigen/Core>
int main()
{
//mat1
Eigen::MatrixXd mat1 = Eigen::MatrixXd::Constant(3, 5, 2);
std::cout << mat1 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//mat2
Eigen::MatrixXd mat2 = Eigen::MatrixXd::Constant(5, 3, 4);
std::cout << mat2 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//mat3
Eigen::MatrixXd mat3(3, 5);
for (int i = 0; i < mat3.rows(); i++)
{
for (int j = 0; j < mat3.cols(); j++)
{
mat3(i, j) = (double)i + (double)j;
}
}
std::cout << mat3 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//行列と行列の和
std::cout << mat1 + mat3 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//行列と行列の積
std::cout << mat1 * mat2 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//行列とスカラーの積
std::cout << mat1 * 3 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//行列とスカラーの商
std::cout << mat1 / 2 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//行列と行列の要素同士の積
std::cout << mat1.array() * mat3.array() << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//転置行列
std::cout << mat2.transpose() << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//逆行列
std::cout << mat1.array().inverse() << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
return 0;
}
#include <Eigen/Core>
int main()
{
//mat1
Eigen::MatrixXd mat1 = Eigen::MatrixXd::Constant(3, 5, 2);
std::cout << mat1 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//mat2
Eigen::MatrixXd mat2 = Eigen::MatrixXd::Constant(5, 3, 4);
std::cout << mat2 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//mat3
Eigen::MatrixXd mat3(3, 5);
for (int i = 0; i < mat3.rows(); i++)
{
for (int j = 0; j < mat3.cols(); j++)
{
mat3(i, j) = (double)i + (double)j;
}
}
std::cout << mat3 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//行列と行列の和
std::cout << mat1 + mat3 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//行列と行列の積
std::cout << mat1 * mat2 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//行列とスカラーの積
std::cout << mat1 * 3 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//行列とスカラーの商
std::cout << mat1 / 2 << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//行列と行列の要素同士の積
std::cout << mat1.array() * mat3.array() << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//転置行列
std::cout << mat2.transpose() << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
//逆行列
std::cout << mat1.array().inverse() << std::endl;
std::cout << "-------------------------------------------------------------" << std::endl;
return 0;
}
3.実行結果
・行列と行列の積
・行列とスカラーの積
・行列とスカラーの商
・行列と行列の要素同士の積
・転置行列
・逆行列
4.参考文献
Eigen - C++で使える線形代数ライブラリ
【C++】Eigen関数一覧
Eigen ー C++で線形代数を!(2)
0 件のコメント:
コメントを投稿