常见的几种矩阵分解方式

常见的几种矩阵分解方式1.三角分解(LU分解)矩阵的LU分解是将一个矩阵分解为一个下三角矩阵与上三角矩阵的乘积。本质上,LU分解是高斯消元的一种表达方式。首先,对矩阵A通过初等行变换将其变为一个上三角矩阵。对于学习过线性代数的同学来说,这个过程应该很熟悉,线性代数考试中求行列式求逆一般都是通过这种方式来求解。然后,将原始矩阵A变为上三角矩阵的过程,对应的变换矩阵为一个下三角矩阵。这中间的过程,就是Doolittleal

大家好,又见面了,我是你们的朋友全栈君。

项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

1.三角分解(LU分解)

矩阵的LU分解是将一个矩阵分解为一个下三角矩阵与上三角矩阵的乘积。本质上,LU分解是高斯消元的一种表达方式。首先,对矩阵A通过初等行变换将其变为一个上三角矩阵。对于学习过线性代数的同学来说,这个过程应该很熟悉,线性代数考试中求行列式求逆一般都是通过这种方式来求解。然后,将原始矩阵A变为上三角矩阵的过程,对应的变换矩阵为一个下三角矩阵。这中间的过程,就是Doolittle algorithm(杜尔里特算法)。

转一个Tony Ma同学写的例子:
若AX=b是一个非奇异系统,那么高斯消元法将A化简为一个上三角矩阵。若主轴上没有0值,则无需交互行,因此只需进行第3类初等行变换(把第 i 行加上第 j 的 k 倍)即可完成此变换。例如
这里写图片描述
第3类行变换可以通过左乘相应的初等矩阵image实现,对上例来说进行的3个变换就是相应初等矩阵的乘积。注意最右边是一个下三角矩阵L
这里写图片描述
从而有 G 3 G 2 G 1 A = U G_3G_2G_1A = U G3G2G1A=U,即 A = G 1 − 1 G 2 − 1 G 3 − 1 U A=G_1^{-1}G_2^{-1}G_3^{-1}U A=G11G21G31U。因此 A = L U A=LU A=LU,为一个下三角与一个上三角矩阵的乘积,因此称为LU分解。
注意:
1)U是高斯消元的结果,且对角线上是主元
2)L对角线上是1,对角线下面的元素image恰恰是在式1中用于消去(i,j)位置上元素的乘子。

LU分解常用来求解线性方程组,求逆矩阵或者计算行列式。例如在计算行列式的时候, A = L U A=LU A=LU d e t ( A ) = d e t ( L ) d e t ( U ) det(A) = det(L)det(U) det(A)=det(L)det(U)。而对于三角矩阵来说,行列式的值即为对角线上元素的乘积。所以如果对矩阵进行三角分解以后再求行列式,就会变得非常容易。

在线性代数中已经证明,如果方阵 A A A是非奇异的,即 A A A的行列式不为0,LU分解总是存在的。

并非所有矩阵都能进行LU分解,能够LU分解的矩阵需要满足以下三个条件:

1.矩阵是方阵(LU分解主要是针对方阵);
2.矩阵是可逆的,也就是该矩阵是满秩矩阵,每一行都是独立向量;
3.消元过程中没有0主元出现,也就是消元过程中不能出现行交换的初等变换。

2.QR分解

QR分解是将矩阵分解为一个正交矩阵与上三角矩阵的乘积。用一张图可以形象地表示QR分解:
这里写图片描述
这其中, Q Q Q为正交矩阵, Q T Q = I Q^TQ = I QTQ=I,R为上三角矩阵。
实际中,QR分解经常被用来解线性最小二乘问题。

3.Jordan分解

每次看到Jordan分解,就想起当年考研的那段时光。控制原理里面,就有大段关于Jordan分解的内容。可惜当时矩阵分析没有学到位,线性代数里头又没有提到Jordan分解,所以理解起来那个费劲。
废话这么多,先来看看Jordan到底是个什么鬼:
我们将下面的 k × k k \times k k×k 阶方阵
J K ( λ ) = [ λ 1 λ 1 ⋱ ⋱ λ 1 λ ] k × k J_K(\lambda) = \left[ \begin{matrix} \lambda & 1 & \\ & \lambda & 1 \\ & & \ddots & \ddots \\ & & & \lambda & 1\\ & & & & \lambda \end{matrix} \right] _{k \times k} JK(λ)=λ1λ1λ1λk×k
称为Jordan块。同时,我们也将由若干个Jordan块组成的对角矩阵成为Jordan阵。
由Jordan块的定义不难看出,Jordan 阵与对角阵的差别仅在于它的上 (下)对角线的元素是0或1。因此,它是特殊的上三角阵。

为什么要进行Jordan分解呢?或者说,Jordan分解能解决什么问题呢?
我们先来复习一下,如果一个n阶方阵 A A A可以对角化,那么 A A A至少满足下列条件的一个:
1. A A A有n个线性无关的特征向量。
2. A A A的所有特征值的几何重数等于相应的代数重数,即 q i = p i q_i = p_i qi=pi
3. A A A的极小多项式经标准分解后,每一项都是一次项,且重数都是1。

因为有的矩阵不可以进行对角化,那么我们可以对它进行Jordan分解,达到简化计算的目的。

4.SVD分解

关于SVD分解,前面已经有文章专门介绍了。
http://blog.csdn.net/bitcarmanlee/article/details/52068118

参考文献

  1. https://zhuanlan.zhihu.com/p/54943042 矩阵分解—1-LU分解
  2. https://zhuanlan.zhihu.com/p/84415000 [数值计算] QR分解
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139071.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • lldp 命令「建议收藏」

    lldp 命令「建议收藏」LLDP协议介绍:简单说来,LLDP是一种邻近发现协议。它为以太网网络设备,如交换机、路由器和无线局域网接入点定义了一种标准的方法,使其可以向网络中其他节点公告自身的存在,并保存各个邻近设备的发现信息。例如设备配置和设备识别等详细信息都可以用该协议进行公告。具体来说,LLDP定义了一个通用公告信息集、一个传输公告的协议和一种用来存储所收到的公告信息的方法。要公告自身信息的设备…

    2022年5月28日
    69
  • idhttp的socket error # 10054 错误的处理办法

    idhttp的socket error # 10054 错误的处理办法在通过http实现restful数据通讯时,死活出现:socketerror#10054导致这种情况的原因很复杂。同样的程序,在不同的环境中出现不同结果。通过观察,发现登录后获取toke

    2022年7月3日
    24
  • C#窗体中的textBox怎么设置为密码框[通俗易懂]

    C#窗体中的textBox怎么设置为密码框[通俗易懂]场景在用C#做登录的窗体时,需要将TextBox设置为密码框。一般会找到TextBox然后设置其属性。但是属性里面没有直接的设置TextBox类型的属性。实现在行为–PasswordChar里面设置其为*,则自动将TextBox的类型修改为密码框。效果…

    2022年7月18日
    14
  • 简单说说USB协议(一)[通俗易懂]

    简单说说USB协议(一)[通俗易懂]USB,通用串行总线,是一种计算机与外围设备进行数据交互的通信协议。任何东西的出现都是有理可循的,在以前计算机刚兴起的时候,要连接一个新的设备,需要断电关闭计算机,连接好设备,配置好硬件,再上电运行,这个过程相当费时费力,为了能拥有随意接入设备这种热拔插特性,USB总线协议应运而生。USB总线如今已经有USB1.0、USB1.1、USB2.0、USB3.0。USB协议采用主从工作模式,…

    2022年6月17日
    38
  • 转:js 将json字符串转换为json对象的方法解析「建议收藏」

    转:js 将json字符串转换为json对象的方法解析「建议收藏」例如:JSON字符串:varstr1=‘{“name”:“cxh”,“sex”:“man”}’;JSON对象:varstr2={“name”:“cxh”,“sex”:“man”};一、JSON字符串转换为JSON对象要使用上面的str1,必须使用下面的方法先转化为JSON对象://由JSON字符串转换为JSON对象varobj=eval(’(’+str+‘)’);或者varobj=str.parseJSON();//由JSON字符串转

    2022年9月28日
    4
  • cmd ping大包命令_cmd中ping命令无效

    cmd ping大包命令_cmd中ping命令无效在cmd中用PING命令时,出现’Ping’不是内部或外部命令,也不是可运行的程序或批处理文件。先了解一下内容:1、可执行文件、命令文件和批处理文件以.exe或者.com或者.bat为扩展名的文件分别被称为可执行文件、命令文件和批处理文件。2、外部命令和内部命令DOS命令可以分为外部命令和内部命令,内部命令包含在一个名为command.com的文件,在系统启动时候驻留在内存中。外部命令是保存在c…

    2025年11月20日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号