详解矩阵的三角分解A=LU

目录

一. 求解Ax=b

二. 上三角矩阵分解

三. 下三角矩阵分解

四. 矩阵的三角分解

举例1:矩阵三角分解

举例2:三角分解的限制

举例3:主元和乘法因子均为1

举例4:U为单位阵

小结


一. 求解Ax=b

我们知道高斯消元法可以对应矩阵的基础变换。先来看我们比较熟悉的Ax=b模型,如下:

解这个方程很简单,只需要三步高斯消元步骤,分别乘以2,-1,-1.

第一步:第二行减去第一行乘以2倍;

第二步:第三行减去第一行乘以-1;

第三步:第三行减去第二行乘以-1;

以上方程中的系数矩阵A会变成新的系数矩阵(coefficient matrix)U,由此得到等效的方程组:

Ux=c

很明显,此时的U为上三角矩阵,也就是对角线往下的位置均为0,如下:

把矩阵A变成矩阵U的过程记录下来,同样的步骤运用在b上就可以变成等式右边的c,我们把这个过程可称之为前向消元过程(forward elimination),其关键的步骤有三步:

  1. 从矩阵A和向量b开始;
  2. 按顺序进行以上三步;
  3. 形成新的矩阵U与向量c

接着方程Ux=c,就可以被后向带入法(back substitution)解决。

二. 上三角矩阵分解

在刚才的解方程过程中,我们经历了如何把矩阵A变成上三角矩阵U。总共分成三步,可以把每一步抽象成一种矩阵变换,第一步叫矩阵E,第二步叫矩阵F,第三步叫矩阵G,这些矩阵都可以被称之为初等矩阵(elementary matrix)。

那么这些初等矩阵长啥样?

用第i行减去第j行的l倍,那么相等于在矩阵的(i,j)位置,放上-l.对角线上均为1,其他位置均为0,这就是初等矩阵的规律。

需要注意的是,矩阵乘法执行的是行操作,由此可得:

GFEA=U

注意A首先与E相乘,接着是F,最后是矩阵G。

此时可思考一个问题:如果把GFE乘在一起,是不是可以将以上变换合并为一个矩阵,该矩阵可直接把A变成U,同理可以把b变成c。实际上此矩阵为下三角矩阵,省去0,该矩阵即为:

三. 下三角矩阵分解

在以上我们学习了如何把矩阵A变成矩阵U,那么反过来,如何把矩阵U变成A呢?或者换句话说,高斯消元的逆步骤如何理解呢?

首先来看第一步的操作。高斯消元的第一步是第二行减去第一行的两倍,那么逆步骤就是第二行加上第一行的两倍,也就是减去第一行的负两倍,所以(2,1)位置为2,换句话说减法的逆运算即为加法,由此可得:

我们发现加法和减法相乘的结果即为单位阵,这样就可以抵消掉其操作,其实就是求其逆矩阵。

我们来总结下规律。

如果初等矩阵第(i,j)位置为-l,那么其逆矩阵则在相同的位置变成=l,由此可得:

E^{-1}E=I

利用同样的方法,我们可以把E,F,G的逆矩阵全部求出来,记为:

E^{-1},F^{-1},G^{-1}

接下来我们学习如何用一个矩阵实现从U变成A。原高斯消元的最后一步是第三步就可以实现从A到U,那么在求逆时相关的矩阵G则是第一步求逆,也就是求逆是相反步骤,如下:

由此我们便实现了A=LU的过程。

以上L为下三角矩阵(lower triangular),该下三角矩阵的运算非常直接,如下:

观察可以发现该矩阵对角线往下的元素则为乘法因子2和-1,-1

以上运算中的乘法因子即为:

l_{ij}

该因子代表第i行减去第j行的主元,接着在第i行对应的位置出现0,则为实际高斯消元法的步骤。

四. 矩阵的三角分解

三角分解,又称之为Triangular factorization,在网络安全等领域非常多。

在不改变行的情况下,矩阵三角分解如:

A=LU

其中L为下三角矩阵,且对角线处的元素为1。从高斯消元的步骤中获取乘法因子lij,这些元素的值都位于对角线的下面。

U为上三角矩阵,在正向消元步骤结束后可获取,矩阵U对角线处的元素则可称之为主元(pivots)。

举例1:矩阵三角分解

给出矩阵A如下:

将矩阵分解为A=LU,其中U为上三角矩阵如下:

L为下三角矩阵且对角线处的元素值为1,如下:

举例2:三角分解的限制

并不是所有的方阵都可以分解为A=LU,比如举个例子:

实际上需要做一个行交换则可以分解。

举例3:主元和乘法因子均为1

给定如下三阶方阵:

对其进行三角分解A=LU可得:

可以发现此时矩阵的乘法因子和主元均为1,也就是行变换都是直接相减。换句话说从U变成A只有行直接相加的过程。

举例4:U为单位阵

看一个特殊的矩阵A,其刚好为下三角矩阵且对角线处的值为1,如下:

对该矩阵进行高斯消元则非常简单,可分成三步:

第一步:矩阵E:第二行减去第一行的l_{21}

第二步:矩阵F:第三行减去第一行的l_{31}

第三步:矩阵G:第三行减去第二行的l_{32}

此时可以发现U=I

同理对矩阵E,F,G求逆便可以还原出矩阵A,如下:

注意以上运算满足矩阵的结合率。

小结

我们知道基于代数余子式的行列式计算方法,该方法计算量大,难以实现大型矩阵的行列式计算。所以,应该想办法将矩阵的某些元素变换为零,又不影响行列式的求值。比较好的方法是进行初等行变换的运算,可以将矩阵的一些元素有目的地变换成零。

在线性代数领域,有三种初等行变换方法,然后将其应用于矩阵求矩阵初等行变换的基础是三种常用的矩阵初等行变换方法。

下面的三种变换称为矩阵的初等行变换:

 (1)将矩阵的某一行元素同时乘以常数k,其他元素不变;

(2)将矩阵的某一行所有元素乘以常数k 并加到另一行上;

(3)将矩阵的任意两行互换,其他行的元素不变。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[java基础揉碎]键盘输入语句

介绍 在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。 需要一个扫描器(对象),就是Scanner 用到的scanner代码例子

GitFlow工作流

基于 Git 这一版本控制系统,通过定义不同的分支,探索合适的工作流程来完成开发、测试、修改等方面的需求。 例如:在开发阶段,创建 feature 分支,完成需求后,将此分支合并到 develop 分支上;在发…

HarmonyOS鸿蒙应用开发 (一、环境搭建及第一个Hello World)

万事开头难。难在迈出第一步。心无旁骛,万事可破。没有人一开始就能想清楚,只有做起来,目标才会越来越清晰。--马克.扎克伯格 前言 2024年1月16日,华为目前开启已HarmonyOS NEXT开发者预览版Beta招募,报名周期为1月15…

elastic search入门

参考1:Elastic Search 入门 - 知乎 参考2:Ubuntu上安装ElasticSearch_ubuntu elasticsearch-CSDN博客 1、ElasticSearch安装 1.1安装JDK,省略,之前已安装过 1.2创建ES用户 创建用户:sudo useradd esuser 设置密码&…

Python基础第五篇(Python数据容器)

文章目录 一、数据容器入门二、数据容器 list 列表(1),list 列表定义(2),list列表的索引(3),list列表的常见操作(4),list列表的遍历 三、数据容器:tuple(元组)(1),tuple元组定义(2),tuple元组的索引(3),tuple元组的常见操作(4),tuple元组的遍…

解密.dataru被困的数据:如何应对.dataru勒索病毒威胁

导言: 在数字时代,勒索病毒如.dataru正在不断演变,威胁着用户的数据安全。本文91数据恢复将深入介绍.dataru勒索病毒的特点、被加密数据的恢复方法,以及预防措施,帮助您更好地了解并对抗这一数字威胁。当面对被勒索病…

磁盘分区机制

lsblk查看分区 Linux分区 挂载的经典案例 1. 虚拟机增加磁盘 点击这里,看我的这篇文章操作 添加之后,需要重启系统,不重启在系统里看不到新硬盘哦 出来了,但还没有分区 2. 分区 还没有格式化 3. 格式化磁盘 4. 挂载 5. 卸载…

UG制图-创建图纸的多种方法

1、2D:创建独立2D图纸,不引用任何3D模型 在UG软件中选择新建,或者快捷键ctrl N,进入新建命令,然后点击图纸,在关系中选择独立的部件,就创建了一个独立的图纸,我们可以在装配中添加…

大数据安全 | 期末复习(上)| 补档

文章目录 📚概述⭐️🐇大数据的定义、来源、特点🐇大数据安全的含义🐇大数据安全威胁🐇保障大数据安全🐇采集、存储、挖掘环节的安全技术🐇大数据用于安全🐇隐私的定义、属性、分类、…

SQL 注入总结(详细)

一、前言 这篇文章是最近学习 SQL 注入后的笔记,里面整理了 SQL 常见的注入方式,供大家学习了解 SQL 注入的原理及方法,也方便后续自己回顾,如有什么错误的地方欢迎指出! 二、判断注入类型 按照注入点类型分类 数字型…

SpringMVC获取参数与页面跳转

获取参数 第一种 直接当成方法的参数,需要与前台的name一致 相当于Request.getAttribute("username") Controller 第二种 使用对象接收 页面的name也要和对象的字段一致 创建一个对应的实体类 Controller 将参数更换为User对象就行 SpringMVC获取到…

代码随想录 Leetcode225. 用队列实现栈

题目&#xff1a; 代码(首刷自解 2024年1月21日&#xff09;&#xff1a; class MyStack { public:queue<int> Q1;queue<int> Q2;MyStack() {}void push(int x) {Q1.push(x);}int pop() {int cnt Q1.size() - 1;while (cnt--) {Q2.push(Q1.front());Q1.pop();}in…

3岁男童不慎从6楼坠落,命悬一线!路人大哥路过冲上前徒手接人!

惊心动魄的时刻&#xff0c;一个男孩从6楼窗户坠落&#xff0c;命悬一线&#xff01;但幸运的是&#xff0c;一位路过的男子挺身而出&#xff0c;徒手接住了孩子。让我们一起回顾一下这个英勇的瞬间&#xff01; 1月19日&#xff0c;福建南平市浦城县&#xff0c;一个平静的午后…

OpenHarmony:使用网络组件axios与Spring Boot进行前后端交互

流程图&#xff1a; 一、简单的交互 前端请求函数 firstGet(): Promise<AxiosResponse>{return axios.get(http://192.168.211.1:8090/test/1); } getAaddB(a: number, b: number): Promise<AxiosResponse>{return axios.get(http://192.168.211.1:8090/test/2…

RocketMQ Dashboard 详解

RocketMQ Dashboard 是 RocketMQ 的管控利器&#xff0c;为用户提供客户端和应用程序的各种事件、性能的统计信息&#xff0c;支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作。 一、介绍​ 功能概览​ 面板功能运维修改nameserver 地址; 选用 VIPChannel驾驶舱查…

【Linux】第三十三站:日志

文章目录 一、实现一个简单的日志1.简介2.可变参数3.错误等级4.时间5.打印每一条参数6.与前面的一些代码搭配使用 二、完整代码 一、实现一个简单的日志 1.简介 我们运行代码的时候&#xff0c;我们希望有各种各样的运行时候的一些信息。这也就是日志 它一半有日志时间&…

神策 CDP 获评中国软件评测中心「优秀大数据产品」

近日&#xff0c;中国软件评测中心在第十三届软件大会上揭晓了「第十五期优秀大数据产品、解决方案和案例测评结果」。神策数据基于客户旅程编排的客户数据平台&#xff08;CDP&#xff09;1.3.0 凭借出色的产品能力获评「优秀大数据产品」&#xff0c;并获得大数据基础设施类产…

目标检测数据集 - MS COCO

文章目录 1. 数据集介绍2. 使用pycocotools读取数据3. 验证mAP 论文&#xff1a;Microsoft COCO: Common Objects in Context 网址&#xff1a;https://arxiv.org/abs/1405.0312 官网&#xff1a;https://cocodataset.org/ 1. 数据集介绍 MS COCO是一个非常大型&#xff0c;且…

AI短视频生成与制作从入门到精通

系列文章目录 送书第一期 《用户画像&#xff1a;平台构建与业务实践》 送书活动之抽奖工具的打造 《获取博客评论用户抽取幸运中奖者》 送书第二期 《Spring Cloud Alibaba核心技术与实战案例》 送书第三期 《深入浅出Java虚拟机》 送书第四期 《AI时代项目经理成长之道》 …

作者哪些不为人知的秘密,关于作者的八卦!!作者自述!!

各位粉丝&#xff0c;各位开发界的同仁们&#xff0c;你们好&#xff01;我是艾利克斯冰&#xff0c;也是公众号 IT技术馆 的馆长。 本人一直从事Java方向的技术研发工作&#xff0c;接触到最多的就是技术搭建和架构设计、微信小程序等。 除此之外&#xff0c;本人还学习了Go语…