C++实现矩阵对称正交化的示例代码

【C++实现矩阵对称正交化的示例代码】1.python代码

import numpy as npimport pandas as pddf=pd.DataFrame()df['fac_01']=(34, 45, 65)df['fac_02']=(56, 25, 94)print(df)print('------------------矩阵的特征跟D、和特征向量U-----------------------')D,U=np.linalg.eig(np.dot(df.T, df)) # 求矩阵的特征跟D、和特征向量Uprint(D,U,sep='\n')print('\n------------------对角矩阵-----------------------')print(np.diag(D**(-0.5)))print('\n------------------对称正交后的矩阵-----------------------')S = np.dot(np.dot(U, np.diag(D**(-0.5))), U.T) # 求过渡矩阵S = U* DEx *U'F_hat = np.dot(df, S) # 求对称正交后的矩阵print(F_hat)

2.C++的Eigen库实现
#include "Eigen/Dense"using namespace Eigen; int main(){//初始化MatrixXf A(3, 2); A(0,0) = 34; A(0,1) = 56; A(1,0) = 45; A(1,1) = 25; A(2,0) = 65; A(2,1) = 94; //生成正交矩阵MatrixXf AEx = A.transpose() * A; int nRowSize = AEx.rows(); int nColSize = AEx.cols(); //求特征根、特征向量SelfAdjointEigenSolver eigensolver(AEx); MatrixXf D = eigensolver.eigenvalues(); MatrixXf U = eigensolver.eigenvectors(); std::cout<<"特征根如下:" <
3.结果对比
C++实现矩阵对称正交化的示例代码
文章图片

到此这篇关于C++实现矩阵对称正交化的文章就介绍到这了,更多相关C++矩阵对称正交化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    推荐阅读