lu分解求行列式_矩阵lu分解步骤

lu分解求行列式_矩阵lu分解步骤三种计算矩阵的行列式的方法之三LU分解法_lu分解和qr分解哪个算矩阵行列式比较快

 三种计算矩阵的行列式的方法之三 LU分解法

       用LU分解法计算矩阵的行列式,是我无意中在MATLAB中看到的。这是他的官方文档中,计算行列式的函数(det(A))中介绍的方法,我看过以后觉得非常有趣就记下来了。

这是官方说明文档的截图:

lu分解求行列式_矩阵lu分解步骤

 这是我对MATLAB所使用的算法的个人记录:

lu分解求行列式_矩阵lu分解步骤


 关于下三角矩阵L的行列式一定等于+-1的一些说明

 证明:在LU分解中,下三角矩阵L的行列式一定是\pm 1.

在证明之前,我这里先补充几条关于行列式的性质:

性质1:对于三角矩阵而言,不论是上三角矩阵还是下三角矩阵,其行列式的值都等于主对角线上元素的乘积。

lu分解求行列式_矩阵lu分解步骤

        此处引用Gilbert strang的线性代数教科书《introduction to linear algebra》中,第251页处的一段关于矩阵行列式的相应说明:

lu分解求行列式_矩阵lu分解步骤

        截图中第七条性质说:如果矩阵A是一个三角矩阵,则矩阵A的行列式等于其对角线上元素的乘积。

\mathbf{\left | A \right |=a_{11}*a_{22}*...*a_{nn}}

性质2:两个矩阵A,B的积AB的行列式|AB|等于这两个矩阵各自的行列式|A|和|B|的积,即:

\mathbf{\left | AB \right |=\left | A \right |\left | B \right |}

lu分解求行列式_矩阵lu分解步骤

性质3:单位矩阵I的行列式为1。

性质4:对矩阵进行行与行之间的交换后,需要改变原矩阵行列式的正负号。

lu分解求行列式_矩阵lu分解步骤

        在LU分解中,下三角阵L是高斯消元的逆过程,是多个消元矩阵E的逆矩阵E^{-1}的乘积(形如下图中的矩阵)。

lu分解求行列式_矩阵lu分解步骤

        首先,根据上面说的性质1可知,所有消元矩阵E的逆矩阵E^{-1}的行列式等于其对角线上所有元素的乘积。又因为矩阵E^{-1}对角线上元素都是1,所以,E^{-1}的行列式一定等于1。此外,根据性质2,L的行列式等于多个E^{-1}的行列的乘积,所以,L的行列式必然等于1,即:

\left |L \right |=\left | {E_{1}}^{-1}\right |*\left | {E_{2}}^{-1}\right |*\left | {E_{3}}^{-1}\right |*...\left | {E_{n}}^{-1}\right |

        可是,如果对矩阵A进行高斯消元的过程中,遇到对角线上的元素为0的情况,就需要对矩阵进行行交换,则上式就会包含一些置换矩阵:

\left |L \right |=\left | {P_{1}}^{-1}\right |*\left | {E_{1}}^{-1}\right |*\left | {E_{2}}^{-1}\right |*\left | {E_{3}}^{-1}\right |*\left | {E_{4}}^{-1}\right |*\left | {P_{2}}^{-1}\right |...\left | {E_{n}}^{-1}\right |

        这种情况下计算出来的L矩阵可就不一定是标准的下三角矩阵了,比如说下面这个矩阵:

lu分解求行列式_矩阵lu分解步骤

        这样一来就需要对L矩阵进行行交换,把他变成标准的下三角矩阵,以确保他的det等于1。而交换的过程需要用置换矩阵P记录下来,使得原来的L,变成PL(这时的L已经是标准的下三角矩阵了)。因为置换矩阵P只不过是对单位矩阵I进行行交换后的结果,因此,综合性质3性质4可知,置换矩阵P的行列式的值只能是+1或-1。在结合前面得出的L矩阵的行列式一定是1的结论,最终PL的行列式只能是+1或-1。

        因此,当我们基于矩阵A的LU分解计算出L的det后(必然是1),如果高斯消元的过程中进行过行交换,还要再根据行交换的次数(置换矩阵P)去调整det的符号。

        事实上,在matlab中自带的计算矩阵行列式的det函数就利用了这一点。

关于Matlab的说明:

        按照Matlab的官方说明文档,首先,他在计算矩阵的det时先调了lu分解函数,对矩阵进行分解。

lu分解求行列式_矩阵lu分解步骤

注意,matlab的lu分解函数有很多,只是他在计算行列式时,调用的是[L,U]=lu(A)。

lu分解求行列式_矩阵lu分解步骤

lu分解求行列式_矩阵lu分解步骤        按照他官方文档的说法,分解后的L矩阵和U矩阵中,L矩阵有被置换过,也就不是标准的三角矩阵。这和我们前面提到的,如果消元时进行过行交换的情况是一致的。

        然后,对这个“经过置换的下三角矩阵L”进行行交换,并记录交换过程得到:

\left | PL \right |=\left |P \right |\left | L \right |=\pm 1*1=\pm 1

lu分解求行列式_矩阵lu分解步骤

        最后一步,求出矩阵U(他一定是一个标准的上三角矩阵)中主对角线上所有元素的乘积,然后和前一步的结果相乘,得到矩阵A的行列式:

\left |A \right |=\left |PLU \right |=\left | P \right |\left | L \right |\left | U \right |=(\pm 1)*(1)*\left | U \right |=\pm\left | U \right |

 例子:

lu分解求行列式_矩阵lu分解步骤

lu分解求行列式_矩阵lu分解步骤

想对LU分解有更加深入了解的人,可以看我的另一篇文章: 

线性代数 — LU分解(Gauss消元法的矩阵表示)_松下J27的博客-CSDN博客


(全文完)

作者 — 松下J27 

我自己归纳的矩阵的行列式的其他算法:

1,用拉普拉斯展开法求行列

线性代数 — 三种计算矩阵行列式的方法之三 LU分解法

2,用莱布尼兹展开法求行列式

线性代数 — 三种计算矩阵行列式的方法之三 LU分解法

参考文献(鸣谢 ):

1,https://en.wikipedia.org/wiki/Determinant

2,Determinant of a Matrix

3,矩阵行列式 – MATLAB det- MathWorks 中国

4,线性代数 — LU分解(Gauss消元法的矩阵表示)_矩阵的lu分解-CSDN博客

本文于2024年1月6号进行了大量修改。

经典歌词赏析:

《牵手》—节选

因为誓言不敢听

因为承诺不敢信

所以放心着你的沉默

去说服明天的命运

lu分解求行列式_矩阵lu分解步骤

(配图与本文无关)

版权声明:所有的笔记,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 —-松下J27

今天的文章lu分解求行列式_矩阵lu分解步骤分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/82051.html

(0)
编程小号编程小号

相关推荐

发表回复

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