LDL^H分解求逆矩阵与MATLAB仿真(Right-Looking)

news2024/11/15 2:16:11

通过LDL^{H}分解将对称正定厄米特矩阵分解成下三角矩阵L和对角矩阵D来求其逆矩阵

目录

前言

一、LDL^H基本算法

二、LDL^H Right-Looking算法

三、D矩阵求逆

四、L矩阵求逆

五、A矩阵求逆

六、计算量分析

七、MATLAB仿真

八、参考资料

总结


前言

        在线性代数中,LDL^H分解是将一个矩阵分解为一个下三角矩阵(L)与一个对角矩阵(D)的过程。由于D是对角矩阵,那么其逆矩阵就等于其所有对角元素的倒数组合成的对角矩阵。求逆矩阵,分解之后便只需要去求L的逆矩阵进而就能求出厄米特矩阵的逆矩阵。


提示:以下是本篇文章正文内容,希望能帮助到各位,转载请附上链接。

一、LDL^H基本算法

        对于一个厄米特矩阵A,可以将其写为

\textbf{A}=\textbf{LDL}^{H}

其中D为对角矩阵,L为下三角矩阵,且对角元全为1。

A的下三角部分(即A_{i,i}\left(j=1,\ldots,N;i\geq j\right))满足:

A_{i,j}=\sum_{k=1}^jL_{i,k}D_{k,k}L_{j,k}^*

L_{i,i}D_{i,i}可按以下步骤求解:

a)

L_{1,1}=1,D_{1,1}=A_{1,1};

b)

\begin{aligned}L_{i,1}&=L_{i,1}\left/D_{1,1}\right.\left(i=2,\ldots,N\right);\end{aligned}

c) 对于第j\left(j=2,\cdots ,N\right)列:

L_{j,j}=1,D_{j,j}=A_{j,j}-\sum_{k=1}^{j-1}L_{j,k}D_{k,k}L_{j,k}^*\text{;}

\begin{aligned}L_{i,j}&=\frac{A_{i,j}-\sum_{k=1}^{j-1}L_{i,k}D_{k,k}L_{j,k}^*}{D_{j,j}}&\left(j+1\leq i\leq N\right)\end{aligned}.

d) 如果j=N,则矩阵分解完成;否则j=j+1,返回 c)。

例如,对于4×4阶矩阵,按公式写出每一个元素表达式如下图所示。

二、LDL^H Right-Looking算法

        注意到LDL分解的步骤c含有计算A_{i,j}-\sum_{k=1}^{j-1}L_{i,k}D_{k,k}L_{j,k}^* 部分,该计算在第 j 列完成列约化操作之后即可对后续子矩阵完成部分更新:

L_{i,j^{\prime}}=L_{i,j^{\prime}}-L_{i,j}D_{j,j}L_{j^{\prime},j}^{*}\left(j^{\prime}=j+1,\ldots,i\right),

称为Right-Looking结构。

L_{i,j}D_{j,j}可按以下步骤求解:

a) 

\textbf{L}=tril(\textbf{A}) (取A的下三角部分)

b) 对于第j\begin{pmatrix}j=1,\ldots,N\end{pmatrix}列:

D_{j,j}=L_{j,j},L_{j,j}=1\text{;}

c) 对于第i\begin{pmatrix}i=j+1,\ldots,N\end{pmatrix}行:

        1)执行执行列约化:

L_{i,j}=L_{i,j}/D_{j,j}\text{;}

        2)更新子矩阵对应行:

L_{i,j^{\prime}}=L_{i,j^{\prime}}-L_{i,j}D_{j,j}L_{j^{\prime},j}^*\left(j^{\prime}=j+1,\ldots,i\right);

d)如果 j = N ,则矩阵分解完成;否则j = j+1,返回b)。

例如,对于4×4阶矩阵,按公式写出每一个元素表达式如下图所示。

三、D矩阵求逆

        由于D是一个对角矩阵,所以D矩阵的逆矩阵可表示为:

\textbf{D}^{-1}=\begin{bmatrix} \frac{1}{D_{1,1}} & & & \\ &\frac{1}{D_{2,2}} & & \\ & & \ddots & \\ & & & \frac{1}{D_{N,N}} \end{bmatrix}

四、L矩阵求逆

        由于L是一个下三角矩阵,我们可以对其求共轭转置得到一个上三角矩阵,这样便可以参考下面这篇文章求其逆矩阵:

http://t.csdnimg.cn/aHPmd

五、A矩阵求逆

        因为A=LDL^H,所以

\mathbf{A}^{-1}=(\mathbf{L}^H)^{-1}\mathbf{D}^{-1}\mathbf{L}^{-1}

六、计算量分析

        对于一个N×N阶厄密对称正定A矩阵,

n(n=1,\cdots ,N)次列约化需要的除法次数为N-n

n次子矩阵更新需要的乘法次数为:

(N-n+1)(N-n)

加法次数(减可看成加)为:

\frac{(N-n+1)(N-n)}2

        那么执行完整个LDLH分解需要的

乘法次数为:

\sum_{n=1}^N\left((N-n+1)(N-n)\right)=\frac{N^3-N}3

加法次数为:

\sum_{n=1}^N\frac{(N-n+1)(N-n)}2=\frac{N^3-N}6

除法次数为:

\sum_{n=1}^{N}(N-n)=\frac{N^2-N}2

执行完之后对对角阵D求逆需要N次除法。

参考http://t.csdnimg.cn/aHPmd,对主对角线全为1的三角矩阵L求逆需要的乘法与加法次数均为

\frac{N^3-3N^2+2N}6

        因为A=LDLH,那么计算\mathbf{A}^{-1}=(\mathbf{L}^H)^{-1}\mathbf{D}^{-1}\mathbf{L}^{-1}(注意D-1是对角阵,L-1、(LH)-1是三角阵)需要的乘法次数为:

\frac{N^3+6N^2+5N}6

加法次数为:

\frac{N^3-N}6

所以通过LDL^H分解求解逆矩阵总共需要的运算次数如下:

乘法:

\frac{N^3-N}3+\frac{N^3-3N^2+2N}6+\frac{N^3+6N^2+5N}6=\frac{4N^3+3N^2+5N}6

加法:

\frac{N^3-N}6+\frac{N^3-3N^2+2N}6+\frac{N^3-N}6=\frac{N^3-N^2}2

除法:

\frac{N^2-N}2+N=\frac{N^2+N}2

七、MATLAB仿真

以MATLAB自带求逆函数inv为对比,仿真得出以下结果:

八、参考资料

https://download.csdn.net/download/m0_66360845/89030881


总结

         以上介绍了一种基于LDL^H,进而求解逆矩阵的方法与MATLAB仿真。小伙伴们认真看完此文章必定有所收获。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1543501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在Ubuntu系统使用Docker搭建MongoDB结合内网穿透实现公网连接

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 前言 本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署Mon…

企业如何选择一个开源「好」项目?

开源 三句半​​​​​​​ 需求明确是关键 风险考量要周全 开源虽好不白捡 别忘合规! 显然,开源已成为一股不可阻挡的洪流,企业拥抱开源,积极参与开源项目不仅是响应技术潮流的必然选择,更是实现自身技术创新、市场拓…

GETSHELL方法总结上

渗透的总步骤 1.信息收集找到弱漏洞 2.漏洞挖掘 漏洞验证 3.有一定权限 getshell 4.提权后---渗透 5.内网渗透】 前后台拿shell方法汇总 接下来我们实操一波dedecms也就是织梦cms 如果你们的靶场是空白的 可能是php版本 我们修改为5.2 可能是源码问题 我们不要急着上传…

【vue核心技术实战精讲】1.6 - 1.8 VUE 指令 (中)

文章目录 前言 本节内容1、v-on使用v-on好处效果 2、事件修饰符2.1、按键码 (<font color red>已废弃&#xff0c;不用研究)示例效果 3、v-for 列表渲染示例效果 前言 上节,我们学习了 Vue指令之v-text 、 v-html、v-if 、v-show、v-bind 点击进入上一节 本节内容 Vue…

【Linux基础】ubuntu虚拟机配置及原理

一、虚拟机 虚拟机&#xff08;Virtual Machine&#xff0c;VM&#xff09;是一种软件实现的计算机系统&#xff0c;它在物理计算机上模拟了一个完整的计算机硬件环境&#xff0c;包括处理器、内存、存储设备和网络接口等。通过虚拟机&#xff0c;用户可以在单个物理计算机上同…

二叉搜索树(二叉排序树,二叉查找树)(附图详解+代码实现+应用分析)

最近学习了有关搜索二叉树的相关知识&#xff0c;在此特意将该知识进行总结分享&#xff0c;希望对大家有所帮助。 文章目录 一.二叉搜索树1.1二叉搜索树的概念1.2二叉搜索树的操作&#xff08;含思路分析代码实现&#xff09;1.2.1二叉搜索树的查找&#xff08;递归实现看最后…

RocketMQ学习笔记:零拷贝

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、零拷贝技术1.1、什么是零拷贝1.2、mmap()1.3、Java中的零拷贝 1、零拷贝技术 1.1、什么是零拷贝 使用传统的IO&#xff0c;从硬盘读取数据然后发送到网络需要经过四个步骤。 通过DMA复…

外包干了5年,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

基于Scapy国内城市空气质量数据采集系统设计与实现

代码和完整的报告在文章最后 城市空气质量数据采集系统设计与实现 &#x1f3d9;️ 研究背景 &#x1f32c;️ 城市化与环境挑战&#xff1a;随着城市化进程的加快&#xff0c;环境污染问题&#xff0c;尤其是空气质量问题&#xff0c;已成为公众关注的焦点。数据监测的重要性…

canvas跟随鼠标移动画带透明度的线(画涂鸦)

提示&#xff1a;canvas画线 文章目录 前言一、带透明度的线二、试错&#xff0c;只有lineTo的时候画&#xff0c;只有最后地方是透明度的三、试错&#xff0c;只存上一次的点&#xff0c;线会出现断裂的情况总结 前言 一、带透明度的线 test.html <!DOCTYPE html> &l…

【日常linux操作命令】

文章目录 1、查看服务器信息1.1、查看内存1.2、查看磁盘1.3、查看CPU信息 2、清理内存缓存2.1、清理PageCache&#xff1a;2.2、清理Dentries和Inodes&#xff1a;2.3、同时清理PageCache、Dentries和Inodes&#xff1a;2.4、清理日志文件2.5、清理临时文件 3、查找文件3.1、查…

在Ubuntu 22.04上源码安装python3.7及setuptools及pip

背景 随着时代发展&#xff0c;ubuntu的版本也在飞速迭代&#xff0c;现在ubuntu中默认带的python3已经到python3.11了&#xff0c;并且python2也已经在新的版本中被废弃了。 但是还有一些场景下会用到python3.7&#xff0c;这里给一些说明&#xff0c;方便大家使用。 操作 …

K3 计划订单投放时,将“关联物料”传递到采购和生产订单的“组部件”字段

参考K/3 WISE 中MRP计算投放过程中 销售订单自定义字段怎么携带到任务单这篇文章&#xff0c;进行优化。 在表ICMrpDestBills下增加触发器&#xff0c;代码如下 CREATE TRIGGER [dbo].[ICMrpDestBills_update]ON [dbo].[ICMrpDestBills]AFTER INSERT,UPDATE AS BEGINSET NO…

【SpringCloud】探索Eureka注册中心

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 …

AISD智能安全配电装置--智能监测、远程监控

安科瑞薛瑶瑶18701709087 AISD100单相、AISD300三相智能安全配电装置是安科瑞专为低压配电侧开发的一款智能安全配电产品。主要针对低压配电系统人身触电、线路老化、短路、漏电等原因引起电气安全问题而设计。 产品主要应用于学校、加油站、医院、银行、疗养院、康复中心、敬…

Douyin视频详情数据API接口(视频详情,评论)

抖音官方并没有直接提供公开的视频详情数据采集API接口给普通用户或第三方开发者。抖音的数据采集通常受到严格的限制&#xff0c;以保护用户隐私和平台安全。 请求示例&#xff0c;API接口接入Anzexi58 如果您需要获取抖音视频详情数据&#xff0c;包括评论、点赞等&#xff…

Java中 List 集合,通过 Stream 流进行排序总结

一、数据准备 public class OrderTest {private String channelCode;private BigDecimal rate;// 省略 getter、setter、toString()、constructor }List<OrderTest> orderTestList new ArrayList<>();OrderTest z09 new OrderTest("Z09", new BigDeci…

EasyCVR在银河麒麟V10系统中启动异常及解决方法

安防监控视频平台EasyCVR具备较强的兼容性&#xff0c;它可以支持国标GB28181、RTSP/Onvif、RTMP&#xff0c;以及厂家的私有协议与SDK&#xff0c;如&#xff1a;海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。平台兼容性强&#xff0c;支持Windows系…

抖音视频关键词爬虫批量采集软件|视频提取下载工具

视频关键词批量采集软件 — 助力您快速获取所需视频 主要功能&#xff1a; 关键词批量提取视频和单独视频提取&#xff0c;提取后下载功能。 功能解析&#xff1a; 1. 关键词批量提取视频的解析 通过输入关键词进行视频搜索和提取。例如&#xff0c;输入“汽车配件”&#x…

抓取京东/淘宝类数据#Javascript#商品详情图片

提出问题 如何在京东商城爬取出各个商品的相关信息(价格、名称、评价、店铺名等等)&#xff0c;比如&#xff0c;打开web京东网站&#xff0c;那么商品展示列表的所有商品的信息&#xff0c;怎么爬下来&#xff0c;怎么保存到表格中&#xff1f; 我们来看看怎么实现这个功能。…