在matlab中我们可以通过sqrtm()函数实现简单的矩阵开方运算,当使用C++时,可以通过以下函数实现。
1、添加头文件:
#include "Eigen/Eigen"
#include "Eigen/Eigenvalues"
2、开方函数:
//A为待开方的矩阵,N为A矩阵的行数
Eigen::MatrixXd MatrixSqrt( const Eigen::MatrixXd & A, int N )
{//只进行开方,不检查矩阵是否可以开方,当矩阵不能开方时,返回的结果会有错误
Eigen::SelfAdjointEigenSolver<MatrixXd> adjoint_eigen_solver((A + A.transpose()) / 2.);//求伴随阵的特征值和特征向量
Eigen::MatrixXd mata = Eigen::MatrixXd::Zero(N, 1);
return adjoint_eigen_solver.eigenvectors() * adjoint_eigen_solver.eigenvalues().cwiseMax(mata).cwiseSqrt().asDiagonal() * adjoint_eigen_solver.eigenvectors().transpose();
}
3、主函数调用文章来源:https://www.toymoban.com/news/detail-551104.html
MatrixXd Sqrtm_A = MatrixSqrt(A, A.rows());//相当于matlab的sqrtm(A)或A^(1/2)
在matlab中我们可以通过sqrtm()函数实现简单的矩阵开方运算,当使用C++时,可以通过以上函数实现。文章来源地址https://www.toymoban.com/news/detail-551104.html
到了这里,关于C++借助Eigen库实现矩阵开方(开根号)运算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!