SlideShare a Scribd company logo
1 of 18
Download to read offline
C++ For Researchers
研究生のためのC++
企画・立案 難波知宏
数値計算ライブラリEigen
第六回
2
What is Eigen?
C++のテンプレートで実装された線形代数ライブラリ
http://eigen.tuxfamily.org/index.php
• 行列積、逆行列、行列式
• 疎行列
• 疑似逆行列
• 固有値分解
• 特異値分解
etc…
3
Eigenのおいしいところ
• 他のC++線形代数ライブラリと比較して…
– インストールが簡単
ヘッダファイルをダウンロードして、インクルードするだけ。
ビルドや、リンクの必要なし。
– 構文が直感的
• 他の言語と比べて…
– 最適化が強力に働き、高速
– 無料
4
Eigenのおいしくないところ
• CPU上でしか動かない… (GPU非対応)
• ドキュメント・資料が少ない…
参考資料
http://robotics.naist.jp/edu/text/?Robotics%2FEigen
5
基本の使い方
Part1
6
行列クラス
基本形
template <typename _Scalar, int _Rows, int _Cols, …>
class Matrix …
短縮形
Vector2f, VectorXf
7
Matrixテンプレートクラス
テンプレート引数で、
型、行数、列数を指定
サイズは
実数のとき固定サイズ
Xのとき可変サイズ
sample 7-01
Matrix<float, 2, 2> a; // float, 2x2
Matrix2f b; // float, 2x2
Matrix3f c; // float, 3x3
MatrixXd d; // double, 可変長
Vector2d p; // double, 2x1
VectorXd q; // double, 可変長
8
例
sample 7-01
Matrix<float, 2, 3> a;
cout << a.rows() << endl; // 行数(2)
cout << a.cols() << endl; // 列数(3)
cout << a.size() << endl; // 全要素数(2x3=6)
9
サイズの取得
sample 7-02
Matrix2f m; // 2x2, float
m(0, 0) = -1, m(0, 1) = -2;
m(1, 0) = -3, m(1, 1) = -4;
10
要素へのアクセス
m(i, j)で各要素にアクセス
sample 7-04
Matrix2f m;
m << 1, 2, 3, 4;
cout << "m :" << endl;
cout << m << endl;
Vector2f v;
v << 1, 2;
cout << "v :" << endl;
cout << v << endl;
Vector2f w = m * v;
cout << "w :" << endl;
cout << w << endl;
実行結果
m :
1 2
3 4
v :
1
2
w :
5
11
11
行列×ベクトル
5
11
=
1 2
3 4
1
2
*演算子で積の計算
coutでコンソール
に出力
sample 7-05
MatrixXd m(2, 2);
m << 1, 2, 3, 4;
cout << m.transpose() << endl; // 転置
cout << m.inverse() << endl; // 逆行列
cout << m.determinant() << endl; // 行列式
// 確認
cout << m * m.inverse() << endl;
12
行列式、逆行列
transpose  転置
inverse  逆行列
determinant  行列式
実践
Part2
13
連立方程式の解
14
exercise 7-1
次の連立方程式の解を求めてください。
𝑥 + 2𝑦 + 3𝑧 = 4
5𝑥 − 𝑦 + 4𝑧 = 2
−2𝑥 − 5𝑦 + 𝑧 = 0
15
exercise 7-1
白色化変換
16
exercise 7-2
exercise 7-2
省略
17
18
白色化変換(画像)

More Related Content

Viewers also liked

Cuestionario avas ovas-red liseth marín
Cuestionario avas ovas-red liseth marínCuestionario avas ovas-red liseth marín
Cuestionario avas ovas-red liseth marínLiseth Marin
 
My business presentation
My business presentationMy business presentation
My business presentationhanyessam
 
Curso de español básico para extranjeros
Curso de español básico para extranjeros Curso de español básico para extranjeros
Curso de español básico para extranjeros Liseth Marin
 
Future of Music Coalition: The New Power Trio: Brands Bands and Revenue - mid...
Future of Music Coalition: The New Power Trio: Brands Bands and Revenue - mid...Future of Music Coalition: The New Power Trio: Brands Bands and Revenue - mid...
Future of Music Coalition: The New Power Trio: Brands Bands and Revenue - mid...midem
 
PLANEACIÓN DEL VERBO TO BE EN INGLÉS Y SU RELACIÓN CON LAS PROFESIONES
PLANEACIÓN DEL VERBO TO BE EN INGLÉS Y SU RELACIÓN CON LAS PROFESIONESPLANEACIÓN DEL VERBO TO BE EN INGLÉS Y SU RELACIÓN CON LAS PROFESIONES
PLANEACIÓN DEL VERBO TO BE EN INGLÉS Y SU RELACIÓN CON LAS PROFESIONESCarolina Cardoso
 
Sintesis informativa 15 de marzo 2017
Sintesis informativa 15 de marzo 2017Sintesis informativa 15 de marzo 2017
Sintesis informativa 15 de marzo 2017megaradioexpress
 
Sintesis informativa 13 de marzo 2017
Sintesis informativa 13 de marzo 2017Sintesis informativa 13 de marzo 2017
Sintesis informativa 13 de marzo 2017megaradioexpress
 

Viewers also liked (13)

Cuestionario avas ovas-red liseth marín
Cuestionario avas ovas-red liseth marínCuestionario avas ovas-red liseth marín
Cuestionario avas ovas-red liseth marín
 
Nakornratchsrima
NakornratchsrimaNakornratchsrima
Nakornratchsrima
 
Soloshot
SoloshotSoloshot
Soloshot
 
My business presentation
My business presentationMy business presentation
My business presentation
 
Ntics
NticsNtics
Ntics
 
Curso de español básico para extranjeros
Curso de español básico para extranjeros Curso de español básico para extranjeros
Curso de español básico para extranjeros
 
Resumen Ministerio de Educación -OVA
Resumen Ministerio de Educación -OVAResumen Ministerio de Educación -OVA
Resumen Ministerio de Educación -OVA
 
Future of Music Coalition: The New Power Trio: Brands Bands and Revenue - mid...
Future of Music Coalition: The New Power Trio: Brands Bands and Revenue - mid...Future of Music Coalition: The New Power Trio: Brands Bands and Revenue - mid...
Future of Music Coalition: The New Power Trio: Brands Bands and Revenue - mid...
 
PLANEACIÓN DEL VERBO TO BE EN INGLÉS Y SU RELACIÓN CON LAS PROFESIONES
PLANEACIÓN DEL VERBO TO BE EN INGLÉS Y SU RELACIÓN CON LAS PROFESIONESPLANEACIÓN DEL VERBO TO BE EN INGLÉS Y SU RELACIÓN CON LAS PROFESIONES
PLANEACIÓN DEL VERBO TO BE EN INGLÉS Y SU RELACIÓN CON LAS PROFESIONES
 
مسودة مشروع قانون المعاملات الالكترونية الليبي
مسودة مشروع قانون المعاملات الالكترونية الليبيمسودة مشروع قانون المعاملات الالكترونية الليبي
مسودة مشروع قانون المعاملات الالكترونية الليبي
 
Vocabulario básico para niños
Vocabulario básico para niñosVocabulario básico para niños
Vocabulario básico para niños
 
Sintesis informativa 15 de marzo 2017
Sintesis informativa 15 de marzo 2017Sintesis informativa 15 de marzo 2017
Sintesis informativa 15 de marzo 2017
 
Sintesis informativa 13 de marzo 2017
Sintesis informativa 13 de marzo 2017Sintesis informativa 13 de marzo 2017
Sintesis informativa 13 de marzo 2017
 

Similar to 研究生のためのC++ no.6

YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情Junichi Ishida
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjHisateru Tanaka
 
C# と .NET と ・・・
C# と .NET と ・・・C# と .NET と ・・・
C# と .NET と ・・・ShinichiAoyagi
 
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークCLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークJun-ichi Sakamoto
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
使い捨て python コードの書き方
使い捨て python コードの書き方使い捨て python コードの書き方
使い捨て python コードの書き方Sho Shimauchi
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践Shumpei Shiraishi
 
人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2Ryohei Kamiya
 
Ruby Extended Library
Ruby Extended LibraryRuby Extended Library
Ruby Extended LibraryAkio Tajima
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版Katsuhiro Morishita
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキングTakayuki Kondou
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識Katsuhiro Morishita
 
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!TATSUYA HAYAMIZU
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Tadahiro Ishisaka
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべKaoru NAKAMURA
 
Introduction to Chainer and CuPy
Introduction to Chainer and CuPyIntroduction to Chainer and CuPy
Introduction to Chainer and CuPyKenta Oono
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開Hideki Takase
 

Similar to 研究生のためのC++ no.6 (20)

YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
YAPC::Asia 2014 - 半端なPHPDisでPHPerに陰で笑われないためのPerl Monger向け最新PHP事情
 
私とOSSの25年
私とOSSの25年私とOSSの25年
私とOSSの25年
 
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugjPhpStormを使おう --高槻からは快速急行が早くなります #jbugj
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
 
C# と .NET と ・・・
C# と .NET と ・・・C# と .NET と ・・・
C# と .NET と ・・・
 
C++ Now 2012 report
C++ Now 2012 reportC++ Now 2012 report
C++ Now 2012 report
 
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークCLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトーク
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
使い捨て python コードの書き方
使い捨て python コードの書き方使い捨て python コードの書き方
使い捨て python コードの書き方
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践
 
人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2
 
Ruby Extended Library
Ruby Extended LibraryRuby Extended Library
Ruby Extended Library
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識 第3版
 
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
 
つぶLT20121215
つぶLT20121215つぶLT20121215
つぶLT20121215
 
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
 
C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!C#でもメタプログラミングがしたい!!
C#でもメタプログラミングがしたい!!
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべ
 
Introduction to Chainer and CuPy
Introduction to Chainer and CuPyIntroduction to Chainer and CuPy
Introduction to Chainer and CuPy
 
関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開関数型言語ElixirのIoTシステム開発への展開
関数型言語ElixirのIoTシステム開発への展開
 

More from Tomohiro Namba

Introduction of Unity ML-Agents
Introduction of Unity ML-AgentsIntroduction of Unity ML-Agents
Introduction of Unity ML-AgentsTomohiro Namba
 
Git with Visual Studio
Git with Visual StudioGit with Visual Studio
Git with Visual StudioTomohiro Namba
 
研究生のためのC++ no.7
研究生のためのC++ no.7研究生のためのC++ no.7
研究生のためのC++ no.7Tomohiro Namba
 
研究生のためのC++ no.4
研究生のためのC++ no.4研究生のためのC++ no.4
研究生のためのC++ no.4Tomohiro Namba
 
研究生のためのC++ no.5
研究生のためのC++ no.5研究生のためのC++ no.5
研究生のためのC++ no.5Tomohiro Namba
 
研究生のためのC++ no.3
研究生のためのC++ no.3研究生のためのC++ no.3
研究生のためのC++ no.3Tomohiro Namba
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2Tomohiro Namba
 

More from Tomohiro Namba (7)

Introduction of Unity ML-Agents
Introduction of Unity ML-AgentsIntroduction of Unity ML-Agents
Introduction of Unity ML-Agents
 
Git with Visual Studio
Git with Visual StudioGit with Visual Studio
Git with Visual Studio
 
研究生のためのC++ no.7
研究生のためのC++ no.7研究生のためのC++ no.7
研究生のためのC++ no.7
 
研究生のためのC++ no.4
研究生のためのC++ no.4研究生のためのC++ no.4
研究生のためのC++ no.4
 
研究生のためのC++ no.5
研究生のためのC++ no.5研究生のためのC++ no.5
研究生のためのC++ no.5
 
研究生のためのC++ no.3
研究生のためのC++ no.3研究生のためのC++ no.3
研究生のためのC++ no.3
 
研究生のためのC++ no.2
研究生のためのC++ no.2研究生のためのC++ no.2
研究生のためのC++ no.2
 

研究生のためのC++ no.6