正定Hermiltian矩阵分解的两种方法
对于正定Hermiltian矩阵BBB,想要求解DDD,使其满足
B=D2,(1)B=D^2\ ,\tag{1} B=D2 ,(1)
通常而言,所得的DDD是不唯一的。可以分别通过特征值矩阵、特征向量矩阵求解得到一个对称矩阵,而通过Cholesky分解求解可以得到一个下三角矩阵。
通过特征值矩阵和特征向量矩阵求解
对于正定Hermiltian矩阵,其为对称矩阵,通过特征值矩阵AAA和特征向量矩阵PPP求解所得的矩阵DDD也是对称矩阵。其基本思路是先求解出对称矩阵BBB对应的特征值矩阵AAA和特征向量矩阵PPP,将特征值矩阵求根得到矩阵CCC,然后将特征向量矩阵PPP作用到CCC上得到分解后的矩阵DDD。
通过求解矩阵BBB的特征值和特征向量,得到特征值矩阵AAA和特征值矩阵PPP,满足
B=PTAP,(2)B=P^TAP\ ,\tag{2} B=PTAP ,(2)
其中
A=[λ1000λ2000λ3],(3)A=\begin{bmatrix} \lambda_{1} &0 &0\\ 0 &\lambda_{2} &0\\ 0 &0 &\lambda_{3} \end{bmatrix}\ ,\tag{3} A=⎣⎡λ1000λ2000λ3⎦⎤ ,(3)
λ1,λ2,λ3\lambda_{1},\ \lambda_{2},\ \lambda_{3}λ1, λ2, λ3为特征值,PPP为对应的特征向量矩阵。令
C=[λ1000λ2000λ3],(4)C= \begin{bmatrix} \sqrt{\lambda_{1}} &0 &0\\ 0 &\sqrt{\lambda_{2}} &0\\ 0 &0 &\sqrt{\lambda_{3}} \end{bmatrix}\ ,\tag{4} C=⎣⎡λ1000λ2000λ3⎦⎤ ,(4)
则有
B=PTC2P=PTCPPTCP=D2,(5)\begin{aligned} B&=P^TC^2P\\ &=P^TCPP^TCP\\ &=D^2 \end{aligned}\ ,\tag{5} B=PTC2P=PTCPPTCP=D2 ,(5)
因此,我们得到分解后的对称矩阵DDD满足
D=PTCP,(6)D=P^TCP\ ,\tag{6} D=PTCP ,(6)
Matlab程序例子
将正定Hermiltian矩阵
B=[2515−515184−5411],(7)B=\begin{bmatrix} 25 &15 &-5\\ 15 &18 &4\\ -5 &4 &11 \end{bmatrix}\ ,\tag{7} B=⎣⎡2515−515184−5411⎦⎤ ,(7)
分解。
B=[25 15 -5;15 18 4;-5 4 11];
[P,A]=eig(B);
C=sqrt(A);
D=P*C*P';
D*D
可以验证BBB与D∗DD*DD∗D相等。
通过Cholesky分解求解
对于Cholesky分解,可以参见3阶Hermitian正定矩阵Cholesky分解通用表达式
因此对于BBB,对应的下三角矩阵DDD的各个元素满足
D11=B11D21=B21D11D22=B22−D212D31=B31D11D32=B32−D21D31D22D33=B33−D312−D322(8)\begin{aligned} D_{11}&=\sqrt{B_{11}}\\ D_{21}&=\frac{B_{21}}{D_{11}}\\ D_{22}&=\sqrt{B_{22}-D_{21}^2}\\ D_{31}&=\frac{B_{31}}{D_{11}}\\ D_{32}&=\frac{B_{32}-D_{21}D_{31}}{D_{22}}\\ D_{33}&=\sqrt{B_{33}-D_{31}^2-D_{32}^2} \end{aligned}\tag{8} D11D21D22D31D32D33=B11=D11B21=B22−D212=D11B31=D22B32−D21D31=B33−D312−D322(8)
Matlab程序例子
将正定Hermiltian矩阵
B=[2515−515184−5411],(9)B=\begin{bmatrix} 25 &15 &-5\\ 15 &18 &4\\ -5 &4 &11 \end{bmatrix}\ ,\tag{9} B=⎣⎡2515−515184−5411⎦⎤ ,(9)
分解。
B=[25 15 -5;15 18 4;-5 4 11];
D=zeros(3,3);
D(1,1)=sqrt(B(1,1));D(2,1)=B(2,1)/D(1,1);D(2,2)=sqrt(B(2,2)-D(2,1)^2);
D(3,1)=B(3,1)/D(1,1);D(3,2)=(B(3,2)-D(2,1)*D(3,1))/D(2,2);
D(3,3)=sqrt(B(3,3)-D(3,1)^2-D(3,2)^2);
D*D
可以验证BBB与D∗DD*DD∗D相等。
matlab也可以直接求解Cholesky分解,得到的是一个上三角矩阵
D=chol(B);
D*D
可以验证BBB与D∗DD*DD∗D相等。
正定Hermiltian矩阵分解的两种方法相关推荐
- matlab 求矩阵秩,求矩阵秩的两种方法及MATLAB的应用
摘 要: 高等代数是一门逻辑思维比较强和理论知识比较深的学科, 它具有丰富的数学知识, 涉及许多重要的数学思想, 其在数学领域的应用很广泛, 如行列式.矩阵的相关计算和求解线性方程组的解方面的应 ...
- 密码学——Hill体制密码中已知明文M和密文C求解密钥矩阵K的两种方法之逆矩阵求解法和待定系数求解法
本文主要解决古典密码中的Hill体制密码在已知明文M和密文C的情况下求解密钥矩阵K的两种方法:①求逆矩阵②待定系数法. 如若不懂Hill体制的古典密码可以参照我上一篇文章密码学--几种典型的古典密码体 ...
- python把矩阵存为文件_python 读取文件并把矩阵转成numpy的两种方法
在当前目录下: 方法1: file = open('filename') a =file.read() b =a.split('\n')#使用换行 len(b) #统计有多少行 for i in ra ...
- python numpy读取数据_大神教你python 读取文件并把矩阵转成numpy的两种方法
导读 今天小编就为大家分享一篇python 读取文件并把矩阵转成numpy的两种方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 在当前目录下: 方法1: file = open( ...
- python大神读取_大神教你python 读取文件并把矩阵转成numpy的两种方法
导读 今天小编就为大家分享一篇python 读取文件并把矩阵转成numpy的两种方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 在当前目录下: 方法1: file = open( ...
- MATLAB中代码优化的两种方法
MATLAB中的代码优化 MATLAB中的代码优化有两种重要的方法:预分配组和向量化循环. 我们举一个简单的例子来看,创建一个MATLAB函数来计算f(x) = sin(x / 100π): func ...
- 近似推断包括采样和变分两种方法,前者是通过_____进行近似,后者是通过_______进行近似。
Single Choice (1 point) 近似推断包括采样和变分两种方法,前者是通过_____进行近似,后者是通过_______进行近似. 采样来对目标分布的期望; 把多个变量的积的求和问题转换 ...
- qt 加载 图片旋转_QT 实现图片旋转的两种方法
第一种方案 使用 QPixmap 的 transformed 函数来实现旋转,这个函数默认是以图片中心为旋转点,不能设置旋转的中心点,使用如下: QMatrix matrix; matrix.rota ...
- 求极大子矩阵的两种方法
例1:玉蟾宫 一句话题意:给出一个元素有R和F两种值的矩阵,求全为F的面积最大的子矩阵的面积. 关于这种求极大子矩阵的问题,比较常用的(本蒟蒻会的)有两种: (1)悬线法 /*以下摘自luogu某da ...
最新文章
- /etc/passwd /etc/shadow 详解
- OpenGL fragmentlist片段列表的实例
- matlab扩充内存,matlab扩大内存的方法
- 以前折腾的7zip图标
- Windows消息机制-PreTranslateMessage
- PP视频如何设置默认缓存个数
- c语言中 快速输出字符数组后几位方法
- Golang实践录:oracle数据库实践
- 用python做一个抖音上很火的罗盘时钟
- FPGA:实现快速傅里叶变换(FFT)算法
- 【记录】关于编码格式导致的中文乱码问题
- DWG文件如何转换为PDF黑白文件
- h2o机器学习算法框架学习总结
- 苹果,Inter,AMD
- http://zaojiasys.jianshe99.com 建造师数据泄漏,可以查看全部所有人的信息!
- cad批量选择相同块_[转载]CAD-快速选择相同或类似的物体、图元、块
- kpu 处理器_深度学习及 KPU 基础知识
- 上三角矩阵判定-c++
- 好用的个人树洞外链系统程序源码
- 串口数据可视化工具(Serial Studio)使用