-
Eigen
鎖定
Eigen是一個高層次的C ++庫,有效支持線性代數,矩陣和矢量運算,數值分析及其相關的算法。Eigen是一個開源庫,從3.1.1版本開始遵從MPL2許可。
- 外文名
- Eigen
- 性 質
- 開源C++模板庫
Eigen簡介
Eigen
[1]
目前最新的版本是3.4,除了C++標準庫以外,不需要任何其他的依賴包。Eigen使用的CMake建立配置文件和單元測試,並自動安裝。如果使用Eigen庫,只需包特定模塊的的頭文件即可。
Eigen基本功能
Eigen適用範圍廣,支持包括固定大小、任意大小的所有矩陣操作,甚至是稀疏矩陣;支持所有標準的數值類型,並且可以擴展為自定義的數值類型;支持多種矩陣分解及其幾何特徵的求解;它不支持的模塊生態系統
[2]
提供了許多專門的功能,如非線性優化,矩陣功能,多項式解算器,快速傅立葉變換等。
Eigen支持多種編譯環境,開發人員對庫中的實例在多種編譯環境下經過測試,以保證其在不同編譯環境下的可靠性和實用性。
Eigen歷史版本
Eigen 3.3-alpha1 released! (04.09.2015)
Eigen 3.2.5 released! (16.06.2015)
Eigen 3.2.4 released! (21.01.2015)
Eigen 3.2.3 released! (16.12.2014)
Eigen 3.2.2 released! (04.08.2014)
Eigen 3.2.1 released! (26.02.2014)
Eigen實例
1、矩陣操作:
#include <iostream> #include <Eigen/Dense> using namespace Eigen; int main() { MatrixXd m(2,2); m(0,0) = 3; m(1,0) = 2.5; m(0,1) = -1; m(1,1) = m(1,0) + m(0,1); std::cout << "Here is the matrix m:\n" << m << std::endl; VectorXd v(2); v(0) = 4; v(1) = v(0) - 1; std::cout << "Here is the vector v:\n" << v << std::endl; }
輸出為
Here is the matrix m: 3 -1 2.5 1.5 Here is the vector v: 4 3
2、求解特徵值和特徵向量
#include <iostream> #include <Eigen/Dense> using namespace std; using namespace Eigen; int main() { Matrix2f A; A << 1, 2, 2, 3; cout << "Here is the matrix A:\n" << A << endl; SelfAdjointEigenSolver<Matrix2f> eigensolver(A); if (eigensolver.info() != Success) abort(); cout << "The eigenvalues of A are:\n" << eigensolver.eigenvalues() << endl; cout << "Here's a matrix whose columns are eigenvectors of A \n" << "corresponding to these eigenvalues:\n" << eigensolver.eigenvectors() << endl; }
輸出為
Here is the matrix A: 1 2 2 3 The eigenvalues of A are: -0.236 4.24 Here's a matrix whose columns are eigenvectors of A corresponding to these eigenvalues: -0.851 -0.526 0.526 -0.851
- 參考資料
-
- 1. Eigen Main Page .Eigen [引用日期2015-07-06]
- 2. unsupported modules .Eigen-unsupported [引用日期2015-07-08]
- 3. 參考文檔 .Eigen Chapters[引用日期2015-07-08]