C++使用eigen库做本征分解(eigendecomposition)
Eigendecomposition的概念可见https://en.wikipedia.org/wiki/Eigendecomposition_of_a_matrix
这里贴一段厄米矩阵的代码,见https://eigen.tuxfamily.org/dox/group__TutorialLinearAlgebra.html
注意,不同本征值的本征向量是正交的,这是我们可以直接用矩阵共轭来取代矩阵求逆的原因。
1 #include <iostream> 2 #include <eigen3/Eigen/Dense> 3 using namespace std; 4 using namespace Eigen; 5 6 int main () 7 { 8 Matrix2cd A; 9 A<<complex<double>(1,0), complex<double>(0,1), 10 complex<double>(0,-1), complex<double>(1,0); 11 12 SelfAdjointEigenSolver<Matrix2cd> solver(A); 13 if (solver.info() != Success) 14 { 15 cerr<<"Eigen solver failed."<<endl; 16 abort (); 17 } 18 Matrix2cd lambda = Matrix2cd::Zero(); 19 for (int i = 0; i < lambda.cols(); ++i) 20 lambda(i,i) = solver.eigenvalues()(i); 21 Matrix2cd Q = solver.eigenvectors(); 22 cout<<"Matrix A:\n"<<A<<endl<<endl; 23 cout<<"Matrix lambda:\n"<<lambda<<endl<<endl; 24 cout<<"Matrix Q:\n"<<Q<<endl<<endl; 25 cout<<"Q*Q^dagger:\n"<<Q*Q.adjoint()<<endl<<endl; 26 cout<<"Q*lambda*Q^dagger:\n"<<Q*lambda*Q.adjoint()<<endl<<endl; 27 28 return 0; 29 }
输出结果为
1 Matrix A: 2 (1,0) (0,1) 3 (0,-1) (1,0) 4 5 Matrix lambda: 6 (0,0) (0,0) 7 (0,0) (2,0) 8 9 Matrix Q: 10 (0.707107,0) (0.707107,0) 11 (0,0.707107) (0,-0.707107) 12 13 Q*Q^dagger: 14 (1,0) (0,0) 15 (0,0) (1,0) 16 17 Q*lambda*Q^dagger: 18 (1,0) (0,1) 19 (0,-1) (1,0)
转载于:https://www.cnblogs.com/physcrf/p/9185988.html
C++使用eigen库做本征分解(eigendecomposition)相关推荐
- Eigen库QR分解
Eigen库QR分解 基本 实战 其他 在计算光斑中心位置的研究中,选择了高斯中心法,而该方法求解过程中需要用到QR分解.所以在这里记录分享Eigen库的QR分解使用方法. by HPC_ZY 基本 ...
- Eigen 矩阵的SVD分解
矩阵的SVD分解 一.SVD分解原理 二.SVD分解举例 三.用Eigen库实现SVD分解 1.C++代码 2.输出结果 一.SVD分解原理 奇异值分解是将一个非零的实数矩阵Am×nA_{m \t ...
- Eigen库学习教程(全)
说明:本教程主要是对eigen官网文档做了一个简要的翻译,参考了eigen官网以及一些博主的技术贴,在此表示感谢. Eigen是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相 ...
- 【Eigen】Eigen库基础语法
这里是Eigen库的一些基础语法,摘自<视觉SLAM十四讲>,修改了书中代码的一些bug,部分地方添加了一些自己的理解. 头文件相关 #include <Eigen/Core> ...
- ROS中使用Eigen库[不定期更新]
前期说明 ROS中的数据操作需要线性代数,Eigen库是C++中的线性代数计算库. Eigen库独立于ROS,但是在ROS中可以使用. Eigen库可以参见http://eigen.tuxfamily ...
- eigen库学习笔记
#简介 Eigen是有关线性代数(矩阵.向量等)的c++模板库.支持SSE2/3/4, ARM NEON (32-bit and 64-bit), PowerPC AltiVec/VSX (32-bi ...
- matlab和Eigen库中的一些旋转矩阵(方向余弦矩阵)、四元数和欧拉角之间的转换和绘图的注意事项
最近用matlab和Eigen库中的一些旋转矩阵(方向余弦矩阵).四元数和欧拉角之间的转换和绘图,弄得我有些头疼,把遇到的问题记录一下,以防以后又脑阔疼....有不同的理解可以再评论区批评指正- 主要 ...
- Eigen库学习笔记(四)Eigen用于三维张量
Eigen库学习笔记(四)Eigen用于三维张量 1.示例: 2.3维张量 3.固定大小矩阵TensorFixedSize 4.常用函数API 5.矩阵乘法与广播机制 Tensor的矩阵乘法操作 Te ...
- 矩阵的QR分解c语言编程,[矩阵的QR分解系列五] Eigen中的QR分解
之前介绍的矩阵的三角分解系列介绍了利用矩阵初等变换解决了矩阵三角化问题以及具体的三角分解.但是以初等变换工具的三角分解方法并不能消除病态线性方程组不稳定问题,而且有时候对于可逆矩阵有可能也不存在三角分 ...
最新文章
- 中国人民大学2016考研复试基本分数线
- php如何实现读取网易有道词典输出单词的xml格式并且转化为html形式
- 云时代架构阅读笔记十五——架构设计思维(一)
- memcached协议
- 搭建Java开发环境及相关工具
- java thread safe_Java 线程安全 Thread-Safety
- socket套接字TCP API
- UIImageView三种方式 和 位置分布
- 博士论文答辩||基于深度强化学习的复杂作业车间调度问题研究
- gitlab mr wip 怎么弄成_Gitlab基本管理(二)
- 微软操作系统 Windows Server 2012 R2 官方原版镜像
- Redis缓存雪崩,如何解决?
- 怎么把做好的ps保存成图片_ps存成jpg格式的快捷键,ps如何另存为图片格式
- 多核芯片间的核间通信IPC机制
- U盘打不开的常见原因有哪些?
- 比较有意思的.NET反调—《.NET在蹉跎中一路前行》
- 【渝粤教育】国家开放大学2018年春季 8624-21T物业管理案例分析 参考试题
- 如何避免自己写的代码成为别人眼中的一坨屎 (摘自微信公众号,顶级程序员)...
- 超级无敌各种排序算法 一个代码解决<可以做后序模板>
- 蓝桥杯:旅行家的预算 贪心解法
热门文章
- linux qt设置应用程序图标大小,Qt5 linux如何设置窗口图标图像
- R-因子分析(主成分提取法)
- S32K的flexcan组件使用(RxFIFO+中断)
- 关于H.264 x264 h264 AVC1之间的那些事
- 开直通车需要经历哪些步骤,具体怎么操作
- SpringBoot进行接口设计
- html上实现鼠标悬停显示另一元素
- 使用MPEG4IP_mp4v2实现3GP文件合成
- 三星note5 android版本,三星Note5型号大全
- Revit二次开发-【NO.02】Application、UIApplication、Document、UIDocument的作用