对于正定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=⎣⎡​λ1​00​0λ2​0​00λ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=⎣⎡​λ1​​00​0λ2​​0​00λ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−5​15184​−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} D11​D21​D22​D31​D32​D33​​=B11​​=D11​B21​​=B22​−D212​​=D11​B31​​=D22​B32​−D21​D31​​=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−5​15184​−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矩阵分解的两种方法相关推荐

  1. matlab 求矩阵秩,求矩阵秩的两种方法及MATLAB的应用

    摘    要: 高等代数是一门逻辑思维比较强和理论知识比较深的学科, 它具有丰富的数学知识, 涉及许多重要的数学思想, 其在数学领域的应用很广泛, 如行列式.矩阵的相关计算和求解线性方程组的解方面的应 ...

  2. 密码学——Hill体制密码中已知明文M和密文C求解密钥矩阵K的两种方法之逆矩阵求解法和待定系数求解法

    本文主要解决古典密码中的Hill体制密码在已知明文M和密文C的情况下求解密钥矩阵K的两种方法:①求逆矩阵②待定系数法. 如若不懂Hill体制的古典密码可以参照我上一篇文章密码学--几种典型的古典密码体 ...

  3. python把矩阵存为文件_python 读取文件并把矩阵转成numpy的两种方法

    在当前目录下: 方法1: file = open('filename') a =file.read() b =a.split('\n')#使用换行 len(b) #统计有多少行 for i in ra ...

  4. python numpy读取数据_大神教你python 读取文件并把矩阵转成numpy的两种方法

    导读 今天小编就为大家分享一篇python 读取文件并把矩阵转成numpy的两种方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 在当前目录下: 方法1: file = open( ...

  5. python大神读取_大神教你python 读取文件并把矩阵转成numpy的两种方法

    导读 今天小编就为大家分享一篇python 读取文件并把矩阵转成numpy的两种方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 在当前目录下: 方法1: file = open( ...

  6. MATLAB中代码优化的两种方法

    MATLAB中的代码优化 MATLAB中的代码优化有两种重要的方法:预分配组和向量化循环. 我们举一个简单的例子来看,创建一个MATLAB函数来计算f(x) = sin(x / 100π): func ...

  7. 近似推断包括采样和变分两种方法,前者是通过_____进行近似,后者是通过_______进行近似。

    Single Choice (1 point) 近似推断包括采样和变分两种方法,前者是通过_____进行近似,后者是通过_______进行近似. 采样来对目标分布的期望; 把多个变量的积的求和问题转换 ...

  8. qt 加载 图片旋转_QT 实现图片旋转的两种方法

    第一种方案 使用 QPixmap 的 transformed 函数来实现旋转,这个函数默认是以图片中心为旋转点,不能设置旋转的中心点,使用如下: QMatrix matrix; matrix.rota ...

  9. 求极大子矩阵的两种方法

    例1:玉蟾宫 一句话题意:给出一个元素有R和F两种值的矩阵,求全为F的面积最大的子矩阵的面积. 关于这种求极大子矩阵的问题,比较常用的(本蒟蒻会的)有两种: (1)悬线法 /*以下摘自luogu某da ...

最新文章

  1. /etc/passwd /etc/shadow 详解
  2. OpenGL fragmentlist片段列表的实例
  3. matlab扩充内存,matlab扩大内存的方法
  4. 以前折腾的7zip图标
  5. Windows消息机制-PreTranslateMessage
  6. PP视频如何设置默认缓存个数
  7. c语言中 快速输出字符数组后几位方法
  8. Golang实践录:oracle数据库实践
  9. 用python做一个抖音上很火的罗盘时钟
  10. FPGA:实现快速傅里叶变换(FFT)算法
  11. 【记录】关于编码格式导致的中文乱码问题
  12. DWG文件如何转换为PDF黑白文件
  13. h2o机器学习算法框架学习总结
  14. 苹果,Inter,AMD
  15. http://zaojiasys.jianshe99.com 建造师数据泄漏,可以查看全部所有人的信息!
  16. cad批量选择相同块_[转载]CAD-快速选择相同或类似的物体、图元、块
  17. kpu 处理器_深度学习及 KPU 基础知识
  18. 上三角矩阵判定-c++
  19. 好用的个人树洞外链系统程序源码
  20. 串口数据可视化工具(Serial Studio)使用

热门文章

  1. Zabbix钉钉报警
  2. 为什么要定制网站,有哪些类型 ?
  3. JAVA:类与对象(二)构造方法与封装初步(待修改)
  4. 笔试:天猫魔盒下单问题
  5. Python基础入门:从变量到异常处理--阿里云天池
  6. 在html5中drawimage,HTML5中drawImage用法分析
  7. 天才第一步之------Helloword
  8. 关于IAR Unable to open file错误的方法
  9. C/C++ 运行环境,编写代码工具软件安装
  10. HTTP 401 错误 - 未授权 终极解决办法