Eigen库是用于线性代数运算的C++模板库,提供了矩阵、向量、数值求解器等线性代数相关算法的实现。以下是Eigen库的一些基本用法示例:
首先,你需要下载并安装Eigen库。你可以从Eigen的官方网站上获取最新版本:Eigen官方网站
#include
int main() {
// 定义动态大小矩阵
Eigen::MatrixXd dynamicMatrix(3, 3);
// 定义动态大小向量
Eigen::VectorXd dynamicVector(3);
// 定义固定大小矩阵
Eigen::Matrix3d fixedMatrix;
// 定义固定大小向量
Eigen::Vector3d fixedVector;
// 初始化矩阵和向量的值
dynamicMatrix << 1, 2, 3,
4, 5, 6,
7, 8, 9;
dynamicVector << 1, 2, 3;
fixedMatrix << 1, 2, 3,
4, 5, 6,
7, 8, 9;
fixedVector << 1, 2, 3;
return 0;
}
#include
int main() {
Eigen::MatrixXd A(2, 2);
Eigen::VectorXd b(2), c(2);
A << 1, 2,
3, 4;
b << 5, 6;
// 矩阵和向量相乘
c = A * b;
// 矩阵相加和相减
Eigen::MatrixXd D = A + A;
Eigen::MatrixXd E = A - A;
return 0;
}
#include
int main() {
Eigen::MatrixXd A(2, 2);
Eigen::VectorXd b(2);
A << 2, -1,
1, 1;
b << 1, 2;
// 解线性方程组 Ax = b
Eigen::VectorXd x = A.colPivHouseholderQr().solve(b);
return 0;
}
#include
int main() {
Eigen::MatrixXd A(3, 3);
A << 1, 2, 3,
4, 5, 6,
7, 8, 9;
// 计算特征值和特征向量
Eigen::EigenSolver<Eigen::MatrixXd> solver(A);
// 特征值
Eigen::VectorXd eigenvalues = solver.eigenvalues().real();
// 特征向量
Eigen::MatrixXd eigenvectors = solver.eigenvectors().real();
return 0;
}
#include
int main() {
Eigen::MatrixXd A(3, 2);
A << 1, 2,
3, 4,
5, 6;
// 进行奇异值分解
Eigen::JacobiSVD<Eigen::MatrixXd> svd(A, Eigen::ComputeThinU | Eigen::ComputeThinV);
// U, S, V分别是左奇异矩阵、奇异值矩阵和右奇异矩阵
Eigen::MatrixXd U = svd.matrixU();
Eigen::MatrixXd S = svd.singularValues().asDiagonal();
Eigen::MatrixXd V = svd.matrixV();
return 0;
}
这些示例只是Eigen库提供功能的冰山一角。Eigen库在文档中提供了详细的教程和示例,你可以根据你的具体需求查阅文档:Eigen文档