正定Hermiltian矩阵分解的两种方法

2023-11-17

对于正定Hermiltian矩阵 B B B,想要求解 D D D,使其满足
B = D 2   , (1) B=D^2\ ,\tag{1} B=D2 ,(1)
通常而言,所得的 D D D是不唯一的。可以分别通过特征值矩阵、特征向量矩阵求解得到一个对称矩阵,而通过Cholesky分解求解可以得到一个下三角矩阵。

通过特征值矩阵和特征向量矩阵求解

对于正定Hermiltian矩阵,其为对称矩阵,通过特征值矩阵 A A A和特征向量矩阵 P P P求解所得的矩阵 D D D也是对称矩阵。其基本思路是先求解出对称矩阵 B B B对应的特征值矩阵 A A A和特征向量矩阵 P P P,将特征值矩阵求根得到矩阵 C C C,然后将特征向量矩阵 P P P作用到 C C C上得到分解后的矩阵 D D D

通过求解矩阵 B B B的特征值和特征向量,得到特征值矩阵 A A A和特征值矩阵 P P P,满足
B = P T A P   , (2) B=P^TAP\ ,\tag{2} B=PTAP ,(2)
其中
A = [ λ 1 0 0 0 λ 2 0 0 0 λ 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为特征值, P P P为对应的特征向量矩阵。令
C = [ λ 1 0 0 0 λ 2 0 0 0 λ 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 000λ2 000λ3  ,(4)
则有
B = P T C 2 P = P T C P P T C P = D 2   , (5) \begin{aligned} B&=P^TC^2P\\ &=P^TCPP^TCP\\ &=D^2 \end{aligned}\ ,\tag{5} B=PTC2P=PTCPPTCP=D2 ,(5)
因此,我们得到分解后的对称矩阵 D D D满足
D = P T C P   , (6) D=P^TCP\ ,\tag{6} D=PTCP ,(6)

Matlab程序例子

将正定Hermiltian矩阵
B = [ 25 15 − 5 15 18 4 − 5 4 11 ]   , (7) B=\begin{bmatrix} 25 &15 &-5\\ 15 &18 &4\\ -5 &4 &11 \end{bmatrix}\ ,\tag{7} B=25155151845411 ,(7)
分解。

B=[25 15 -5;15 18 4;-5 4 11];
[P,A]=eig(B);
C=sqrt(A);
D=P*C*P';
D*D

可以验证 B B B D ∗ D D*D DD相等。

通过Cholesky分解求解

对于Cholesky分解,可以参见3阶Hermitian正定矩阵Cholesky分解通用表达式

因此对于 B B B,对应的下三角矩阵 D D D的各个元素满足

D 11 = B 11 D 21 = B 21 D 11 D 22 = B 22 − D 21 2 D 31 = B 31 D 11 D 32 = B 32 − D 21 D 31 D 22 D 33 = B 33 − D 31 2 − D 32 2 (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=B22D212 =D11B31=D22B32D21D31=B33D312D322 (8)

Matlab程序例子

将正定Hermiltian矩阵
B = [ 25 15 − 5 15 18 4 − 5 4 11 ]   , (9) B=\begin{bmatrix} 25 &15 &-5\\ 15 &18 &4\\ -5 &4 &11 \end{bmatrix}\ ,\tag{9} B=25155151845411 ,(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

可以验证 B B B D ∗ D D*D DD相等。

matlab也可以直接求解Cholesky分解,得到的是一个上三角矩阵

D=chol(B);
D*D

可以验证 B B B D ∗ D D*D DD相等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正定Hermiltian矩阵分解的两种方法 的相关文章

  • 将组合字符串和数字输入的元胞数组写入文本文件

    考虑以下 DateTime 2007 01 01 00 00 2007 02 01 00 00 2007 03 01 00 00 Headers Datetime Data Dat 100 200 300 Data DateTime num
  • 是否有一个函数可以检查矩阵是否对角占优(行占优)

    矩阵是对角占优 http en wikipedia org wiki Diagonally dominant matrix 按行 如果对角线处的值在绝对意义上大于该行中所有其他绝对值的总和 对于列也是如此 只是相反 matlab中有没有函数
  • 如何从绘图处理程序中绘图?

    我有绘图的处理程序或图形的处理程序 例子 h plot 1 0 2 10 xx get h xx DisplayName Annotation 1x1 handle Color 0 0 1 LineStyle LineWidth 0 500
  • 优化 MATLAB 代码(嵌套 for 循环计算相似度矩阵)

    我正在 MATLAB 中基于欧几里德距离计算相似度矩阵 我的代码如下 for i 1 N M N is the size of the matrix x for whose elements I am computing similarit
  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 如何在Matlab中将世界坐标转换为像素索引

    我有 512x512x313 体积的 dicom 图像 并且我有一个以世界坐标表示的点 57 7475 63 4184 83 1515 我如何在 Matlab 中获得该世界坐标的相应像素坐标 我不想戳破你的幻想 但你所要求的是不可能的 我能
  • 非模态 questdlg.m 提示

    我的代码绘制了一个图 然后提示用户是否想使用不同的参数绘制另一个图 问题是 当 questdlg m 打开时 用户无法查看绘图的详细信息 这是代码 while strcmp Cont Yes 1 Some code modifying da
  • 为什么 mex 文件中的 OpenMP 仅产生 1 个线程?

    我是 OpenMP 新手 我有以下代码 使用配置了 MSVS2010 的 Matlab mex 可以正常编译 计算机有 8 个可用处理器 我也使用 matlabpool 检查过 include mex h include
  • 如何获取MATLAB句柄对象的ID?

    当我尝试使用时出现问题MATLAB 句柄对象 http www mathworks com help techdoc ref handle html作为关键值MATLAB 容器 Map http www mathworks com help
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • 在Matlab中对字符进行分组并形成矩阵

    我有 26 个字符 A 到 Z 我将 4 个字符组合在一起 并用空格分隔以下 4 个字符 如下所示 abcd efgh ijkl mnop qrst uvwx yz 我的Matlab编码如下 str abcdefghijklmnopqrst
  • 我如何编写一个名为 dedbi 的 MATLAB 函数,它将输入 xtx 作为字符串并返回另一个字符串 xtxx 作为输出。

    dedbi 反转单词 即 a 将被 z 替换 b 将被 y 替换 c 将被 x 替换 依此类推 dedbi 将对大写字母执行相同的操作 即将字符串 A 替换为 Z 将 B 替换为 Y 将 C 替换为 X 依此类推 如果我给函数这个字符串 a
  • 在matlab中,如何读取python pickle文件?

    在 python 中 我生成了一个 p 数据文件 pickle dump allData open myallData p wb 现在我想在Matlab中读取myallData p 我的Matlab安装在Windows 8下 其中没有Pyt
  • 将 Matlab 数组移植到 C/C++

    我正在将 matlab 程序移植到 C C 我有几个问题 但最重要的问题之一是 Matlab 将任何维度的数组都视为相同 假设我们有一个这样的函数 function result f A B C result A 2 B C A B and
  • FMINCON 的替代方案

    除了 fmincon 之外还有其他更快 更高效的求解器吗 我正在使用 fmincon 来解决特定问题 但对于中等大小的向量变量来说 我的内存不足 我也没有任何超级计算机或云计算选项可供使用 我知道任何替代解决方案仍然会耗尽内存 但我只是想看
  • 如何在 MATLAB 编译的应用程序中运行外部 .m 代码? [复制]

    这个问题在这里已经有答案了 我有一个 MATLAB 项目 我使用 MCC 对其进行编译以获得单个可执行文件 然后我想知道外部程序员是否可以在 exe 中执行他的一些 m 文件 而无需重新编译整个项目 重点是提供一个应用程序 其他开发人员可以
  • 在 MATLAB 中绘图后恢复轴

    从文本文件绘制多种方法的输出后 未显示轴的右侧和上侧 我需要拥有它们并将它们加粗 就像当前的轴一样 绘制的数据来自存储每种方法数据的文件 每个数据文件都是一个 256x2 文件 包含 0 1 之间的值 第一列是精度 第二列是召回率 figu
  • 通过 cuFFT 进行逆 FFT 缩放

    每当我使用 cuFFT 绘制程序获得的值并将结果与 Matlab 的结果进行比较时 我都会得到相同形状的图形 并且最大值和最小值位于相同的点 然而 cuFFT 得到的值比 Matlab 得到的值大得多 Matlab代码是 fs 1000 s
  • 将向量(或弧)绘制到玫瑰图上。 MATLAB

    我有两个数据集 其中详细列出了angles 我正在绘制玫瑰图 angles 0 8481065519 0 0367932161 2 6273740453 n 另一个 从这组角度详细说明方向统计 angle error 0 848106563

随机推荐

  • java中的static关键字

    按照是否静态的对类成员变量进行分类可分两种 一种是被static修饰的变量 叫静态变量或类变量 另一种是没有被static修饰的变量 叫实例变量 static关键字的主要两个作用 1 为特定的数据类型或对象分配单一的存储空间 而与创建对象的
  • UE4 UI界面

    在UE4中创建UI界面是创建一个widget 进去之后左上角是选择控件 找到直接拖上去 中间那个框代表的就是我们的屏幕 在button中打字也就是给button命名时需要在上面在拖一个text控件 更好的排版可以改变锚点 这四个就类似与边距
  • 负数的除法和取模运算(Python 2.7和C的比较)

    一 除法 除法的取整分为三类 向上取整 向下取整 向零取整 1 向上取整 向 方向取最接近精确值的整数 在这种取整方式下 5 3 2 5 3 2 5 3 1 5 3 1 2 向下取整 向 方向取最接近精确值的整数 在这种取整方式下 5 3
  • html插入activex,ActiveX in HTML

    My requirement is to instantiate an object using new ActiveX in html I have created a COM component SimpleActiveX using
  • 第六周作业&实验报告四

    一 实验目的 1 掌握类的继承 2 变量的继承和覆盖 方法的继承 重载和覆盖的实现 二 实验的内容 1 根据下面的要求实现圆类Circle 1 圆类Circle的成员变量 radius表示圆的半径 2 圆类Circle的方法成员 Circl
  • 小甲鱼python学习笔记

    http fishc com 高级语言要编译成汇编语言才能被机器 然后再转换成二进制文件才能被机器所理解 idle window alt n 上一条命令 alt p 下一条命令 苹果mac ctrl n 上一条命令 ctrl p 下一条命令
  • 如何在线剪辑视频?手机视频怎样剪辑?

    在这个短视频当道的时代 大家都开始随手录制视频记录生活 一个视频从录制到发布 中间不可缺少的环节就是对视频的剪辑 想要做出高质量的视频 就少不了要在视频剪辑这一方面下功夫 有视频剪辑经验的小伙伴自然会选择使用PR等富有技术含量的软件 但是对
  • 关系型数据库特点分析

    1970年E F Codd发表的那篇阐述新型数据库设计方式的论文 数据管理技术才开始发生了巨大变化 特点分析 形式化的数学模型 使用关系代数来描述数据及数据间的关系 数据结构的逻辑排布方式同它们的物理存储方式相分离 消除数据异常 保证数据一
  • 互联网时代的营销方法

    随着新型互联网时代的到来 金融社会也跟随着发生剧变 出现了许多新兴的营销方式 他们或多或少都与互联网有着不可分离的关系 在这里 我简单向大家介绍几种我较为认可的营销方式 一 饥饿营销 饥饿营销是指商品提供者有意调低产量 以期达到调控供求关系
  • Java知识点二

    20世纪90年代 硬件领域出现了单片式计算机系统 这种价格低廉的系统一出现就立即引起了自动控制领域人员的注意 因为使用它可以大幅度提升消费类电子产品 如电视机顶盒 面包烤箱 移动电话等 的智能化程度 Sun公司为了抢占市场先机 在1991年
  • 【概率论】大数定律

    概要 首先介绍了切比雪夫不等式 然后介绍大数定律概念和3种大数定律及证明 切比雪夫不等式 已知随机变量X的期望EX和方差DX 对 可得的一个上界 解释 不论X服从什么分布 X在E x 的 邻域内取值的概率不小于1 Dx 2 证明 本质 随机
  • echarts 配置问题

    饼图标签重叠 超出 series type pie name 数据来源 radius 40 60 avoidLabelOverlap true 是否启用防止标签重叠策略 minAngle 20 最小的扇区角度 0 360 用于防止某个值过小
  • leetcode算法刷题:长度最小的子数组

    目录 题目如下 输入输出 思路 题目链接 209 长度最小的子数组 力扣 LeetCode 题目如下 输入输出 思路 使用快慢指针 设置指针end 和start指针 一开始end和start从0开始 以及区间最小长度minLen变量设为In
  • java怎么把字符串转换成日期类型

    1 java怎么把字符串转换成日期类型 2 Java如何将指定字符串转化为指定日期格式 3 求JAVA高手解答 有关于字符串类型转换成日期型 4 Java中怎么把字符串转换成日期格式啊 5 java中怎样将字符串转换成日期形式存入数据库 j
  • 3分钟即可了解 FHub中转站文件摆渡新技能

    说到文件摆渡的方式 有很多种 比较传统一点的 像U盘拷贝 FTP等 自动化一点的 像网闸 网盘等 还有一些企业会通过一些技术手段进行摆渡 比如防火墙技术等 这些方式都能在一定程度上解决跨隔离网文件摆渡的问题 为什么这么说呢 且听下文分析 1
  • java中堆栈(stack)和堆(heap)(还在问静态变量放哪里,局部变量放哪里,静态区在哪里.....进来)...

    内存分配的策略 按照编译原理的观点 程序运行时的内存分配有三种策略 分别是静态的 栈式的 和堆式的 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求 因而在编 译时就可以给他们分配固定的内存空间 这种分配策略要求程序代码
  • 联想万全服务器告警信息在哪里看,华为网络设备查看告警信息

    检查设备是否出现故障以及近期是否有重要的告警信息 前提条件 已经完成登录设备 操作步骤 执行命令display alarm all 查看所有活动的硬件告警信息 以判断设备是否发生故障 display alarm all Info NO al
  • Python运维开发:基于openstack RestfulAPI上传镜像和创建云主机

    基础环境 python 脚本文件头建议加入 encoding utf 8 避免编码错误 测试脚本代码用python3命令执行与测试 在linux系统中安装Python3 并安装request等依赖包 配置 有一台搭建好的open stack
  • CSS3渐变

    以前我们如果想要做到一个颜色到另一个颜色的渐变 Gradients 效果 需要用ps之类的应用程序做出一张背景图片 然后放到元素上 这样子不仅麻烦 而且不利于代码的维护 当用户界面大小发生改变时 显示效果也不好 CSS3提供给了我们一种渐变
  • 正定Hermiltian矩阵分解的两种方法

    对于正定Hermiltian矩阵 B B B 想要求解 D D D 使其满足