要在C++中使用Eigen庫進行本征分解,首先需要包含Eigen頭文件,然后可以使用Eigen::SelfAdjointEigenSolver類來進行本征分解操作。下面是一個簡單的示例代碼:
#include <iostream>
#include <Eigen/Dense>
int main() {
Eigen::Matrix3f matrix;
matrix << 1, 2, 3,
2, 5, 6,
3, 6, 9;
Eigen::SelfAdjointEigenSolver<Eigen::Matrix3f> eigensolver(matrix);
if (eigensolver.info() != Eigen::Success) {
std::cout << "Eigen decomposition failed!" << std::endl;
return 1;
}
Eigen::Vector3f eigenvalues = eigensolver.eigenvalues();
Eigen::Matrix3f eigenvectors = eigensolver.eigenvectors();
std::cout << "Eigenvalues:" << std::endl;
std::cout << eigenvalues << std::endl;
std::cout << "Eigenvectors:" << std::endl;
std::cout << eigenvectors << std::endl;
return 0;
}
此代碼首先創建一個3x3的矩陣(matrix),然后使用Eigen::SelfAdjointEigenSolver對其進行本征分解。如果分解成功,可以通過eigensolver.eigenvalues()和eigensolver.eigenvectors()方法獲得本征值和本征向量。接下來,該代碼打印出本征值和本征向量。
注意,要編譯此代碼,需要將Eigen庫的頭文件路徑添加到編譯器的包含目錄中,并鏈接Eigen庫。