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(); //求特征根、特征向量SelfAdjointEigenSolvereigensolver(AEx); MatrixXf D = eigensolver.eigenvalues(); MatrixXf U = eigensolver.eigenvectors(); std::cout<<"特征根如下:" <
3.结果对比
文章图片
到此这篇关于C++实现矩阵对称正交化的文章就介绍到这了,更多相关C++矩阵对称正交化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 人脸识别|【人脸识别系列】| 实现自动化妆
- C语言学习|第十一届蓝桥杯省赛 大学B组 C/C++ 第一场
- paddle|动手从头实现LSTM