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

通过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.mzph.cn/news/778634.shtml

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

相关文章

HarmonyOS入门--配置环境 + IDE汉化

文章目录 下载安装DevEco Studio配置环境先认识DevEco Studio界面工程目录工程级目录模块级目录 app.json5module.json5main_pages.json通知栏预览区 运行模拟器IED汉化 下载安装DevEco Studio 去官网下载DevEco Studio完了安装 配置环境 打开已安装的DevEco Studio快捷方式…

Java中有哪些容器(集合类)?

Java中的集合类主要由Collection和Map这两个接口派生而出,其中Collection接口又派生出三个子接 口,分别是Set、List、Queue。所有的Java集合类,都是Set、List、Queue、Map这四个接口的实现 类,这四个接口将集合分成了四大类&#…

蓝桥杯 - 小明的背包1(01背包)

解题思路: 本题属于01背包问题,使用动态规划 dp[ j ]表示容量为 j 的背包的最大价值 注意: 需要时刻提醒自己dp[ j ]代表的含义,不然容易晕头转向 注意越界问题,且 j 需要倒序遍历 如果正序遍历 dp[1] dp[1 - vo…

Android应用程序的概念性描述

1.概述 Android 应用程序包含了工程文件、代码和各种资源,主要由 Java 语言编写,每一个应用程序将被编译成Android 的一个 Java 应用程序包(*.apk)。 由于 Android 系统本身是基于 Linux 操作系统运行的,因此 …

SpringBoot Redis 之Lettuce 驱动

一、前言 一直以为SpringBoot中 spring-boot-starter-data-redis使用的是Jredis连接池,直到昨天在部署报价系统生产环境时,因为端口配置错误造成无法连接,发现报错信息如下: 一了解才知道在SpringBoot2.X以后默认是使用Lettuce作…

蓝桥杯 2022 省A 选数异或

一种比较无脑暴力点的方法&#xff0c;时间复杂度是(nm)。 (注意的优先级比^高&#xff0c;记得加括号(a[i]^a[j])x&#xff09; #include <iostream> #include <vector> #include <bits/stdc.h> // 包含一些 C 标准库中未包含的特定实现的函数的头文件 usi…

成都市酷客焕学新媒体科技有限公司:实现品牌的更大价值!

成都市酷客焕学新媒体科技有限公司专注于短视频营销&#xff0c;深知短视频在社交媒体中的巨大影响力。该公司巧妙地将品牌信息融入富有创意和趣味性的内容中&#xff0c;使观众在轻松愉悦的氛围中接受并传播这些信息。凭借独特的创意和精准的营销策略&#xff0c;成都市酷客焕…

第二证券|打新股有风险吗?

打新股有危险&#xff0c;其主要危险是破发&#xff0c;其间呈现以下状况&#xff0c;新股可能会破发&#xff1a; 1、估值过高 新股的估值过高&#xff0c;与其价值不相契合&#xff0c;其泡沫性较大&#xff0c;然后导致个股在上市之后&#xff0c;稳健投资者以及主力大量地…

10个替代Sketch的软件大盘点!第一款震撼来袭!

Sketch是Mac平台上专门为用户界面设计的矢量图形绘制工具。Sketch简单的界面背后有优秀的矢量绘制能力和丰富的插件库。但遗憾的是&#xff0c;Sketch只能在Mac平台上使用和浏览&#xff0c;而且是本地化的工具&#xff0c;云共享功能并不完善。在本文中&#xff0c;我们评估了…

金三银四面试题(一):JVM类加载与垃圾回收

面试过程中最经典的一题&#xff1a; 请你讲讲在JVM中类的加载过程以及垃圾回收&#xff1f; 加载过程 当Java虚拟机&#xff08;JVM&#xff09;启动时&#xff0c;它会通过类加载器&#xff08;ClassLoader&#xff09;加载Java类到内存中。类加载是Java程序运行的重要组成…

python(一)网络爬取

在爬取网页信息时&#xff0c;需要注意网页爬虫规范文件robots.txt eg:csdn的爬虫规范文件 csdn.net/robots.txt User-agent: 下面的Disallow规则适用于所有爬虫&#xff08;即所有用户代理&#xff09;。星号*是一个通配符&#xff0c;表示“所有”。 Disallow&…

Scikit-Learn K近邻分类

Scikit-Learn K近邻分类 1、K近邻分类1.1、K近邻分类及原理1.2、超参数K1.3、K近邻分类的优缺点2、Scikit-Learn K近邻分类2.1、Scikit-Learn K近邻分类API2.2、K近邻分类实践(鸢尾花分类)2.3、交叉验证寻找最佳K2.4、K近邻分类与Pipeline1、K近邻分类 K近邻是一种常用的分类…

JSP基础

一、JSP JSP&#xff08;全称&#xff1a;Java Server Pages&#xff09;&#xff1a;Java 服务端页面。是一种动态的网页技术&#xff0c;其中既可以定义 HTML、JS、CSS等静态内容&#xff0c;还可以定义 Java代码的动态内容&#xff0c;也就是 JSP HTML Java 。如下就是js…

【NOI】树的初步认识

文章目录 前言一、树1.什么是树&#xff1f;2.树的基本概念3.树的基本术语3.1 节点3.1.1 根节点3.1.2 父节点、子节点3.1.3 兄弟节点、堂兄弟节点3.1.4 祖先节点、子孙节点3.1.5 叶子节点/终端节点3.1.6 分支节点/非终端节点 3.2 边3.3 度3.3.1 树的度 3.4 层次3.4.1 树的深度3…

ERROR: No matching distribution found for tb-nightly

问题描述 安装tb-lightly失败&#xff1a;ERROR: No matching distribution found for tb-nightly 解决方案 因为我的镜像源默认是清华的&#xff0c;但是pip源中没有对应的“tb-nightly”依赖包。 如果不知道的&#xff0c;也可以查看一下pip的配置&#xff1a; python -m …

【Go】结构体中Tag标识

https://blog.csdn.net/weixin_45193103/article/details/123876319 https://blog.csdn.net/qq_49723651/article/details/122005291 https://juejin.cn/post/7005465902804123679 学一点&#xff0c;整一点&#xff0c;基本都是综合别人的&#xff0c;弄成我能理解的内容 Tag定…

GeoTrust SSL证书有什么优势?

GeoTrust SSL证书具备以下显著优势&#xff1a; 1. 市场占有率比较高&#xff1a;GeoTrust作为知名的SSL证书供应商&#xff0c;拥有广泛的市场接受度和高占有率&#xff0c;表明其产品受到众多企业和网站的信任和采用。 2. 品牌信誉与信任标识&#xff1a;在高安全性浏览器中&…

Unity3d使用Jenkins自动化打包(Windows)(一)

文章目录 前言一、安装JDK二、安装Jenkins三、Jenkins插件安装和使用基础操作 实战一基础操作 实战二 四、离线安装总结 前言 本篇旨在介绍基础的安装和操作流程&#xff0c;只需完成一次即可。后面的篇章将深入探讨如何利用Jenkins为Unity项目进行打包。 一、安装JDK 1、进入…

在word中显示Euclid Math One公式的问题及解决(latex公式,无需插件)

问题&#xff1a;想要在word中显示形如latex中的花体字母 网上大多解决办法是安装Euclid Math One。安装后发现单独的符号插入可行&#xff0c;但是公式中选择该字体时依然显示默认字体。 解决办法&#xff1a;插入公式后&#xff0c;勾选左上角的latex 在公式块中键入latex代码…

Go语言爬虫实战(线程池)

Go语言爬虫实战 目标 利用go语言爬取指定网站的图片。实现爬取网站任意页面所有所需的图片。实现使用go语言线程池开启多个线程爬取图片内容。最后实现创建多个文件夹存储图片。 爬取网站图片 步骤 对指定URL发去GET请求&#xff0c;获取对应的响应。 resp, err : http.Get(…