非方阵LU分解

矩阵乘向量

矩阵与向量的乘法,实际上是矩阵中 每一行作为行向量 与 列向量进行相乘,结果作为一个数,我们把多个数按照一定顺序排列起来也就是向量。

在这里插入图片描述

向量间的乘法也就是:两个向量中对应位置的元素 相乘然后再相加

一个矩阵乘一个向量的结果是一个新的向量,因此我们可以把矩阵看成是对向量的一种变换。

或可以看成向量的函数 f ( x ⃗ ) = b ⃗ f(\vec{x}) = \vec{b} f(x )=b

例如

{ 1 2 3 4 } ⋅ { 5 6 } = { 17 39 } \left\{ \begin{matrix} 1 & 2 \\ 3 & 4 \\ \end{matrix} \right\} \cdot \left\{ \begin{matrix} 5 \\ 6 \\ \end{matrix} \right\} = \left\{ \begin{matrix} 17 \\ 39 \\ \end{matrix} \right\} {1324}{56}={1739}

矩阵乘矩阵

矩阵乘以矩阵,那么我们可以把乘号右边的矩阵看成是由多个列向量,那么矩阵乘以矩阵就可以看成是一个矩阵 分别乘以 多个列向量的,把得到的结果排列起来形成一个新的矩阵,如下所示:

在这里插入图片描述
也就是说矩阵乘法的结果是对一组向量进行变换的结果,或可以理解成是对 乘号右边 矩阵的变换。

高斯消元法

高斯消元法,也就是把一个矩阵通过下面3种操作,变换成一个对角线下方全是0的上三角矩阵。

  1. 某一行 乘 一个常数
  2. 某一行 加(减) 另一个
  3. 交换某两行

如:

{ 1 2 3 0 1 4 0 0 1 } \left\{ \begin{matrix} 1 & 2 & 3 \\ 0 & 1 & 4 \\ 0 & 0 & 1 \\ \end{matrix} \right\} 100210341

这些操作我们都可以看成是一种对矩阵的变换行为,因此这三种变换都可以写成一个 变换矩阵 乘 原矩阵,这些变换矩阵被称为 初等矩阵。(见初等矩阵定义)

也就是:

E ⋅ A = B E\cdot A = B EA=B

  • E E E 为初等矩阵
  • A A A 为原矩阵

那么高斯消元法,实际上也就是找到一系列的初等矩阵对原矩阵进行变换,也就是左乘于原矩阵。

E n ⋅ . . . ⋅ E 2 ⋅ E 1 ⋅ A = B E_n \cdot ... \cdot E_2 \cdot E_1 \cdot A = B En...E2E1A=B

关于LU分解

一个矩阵矩阵可以分解为两个矩阵相乘的形式,其中ALU均为矩阵。

A = L ⋅ U A = L\cdot U A=LU

通过该种分解,可以分解为一个下三角矩阵 乘 一个上三角矩阵,分解后可以有效提升提矩阵计算效率。

根据LU定义的定义,再观察一下高斯消元法的定义:

E n ⋅ . . . ⋅ E 2 ⋅ E 1 ⋅ A = B E_n \cdot ... \cdot E_2 \cdot E_1 \cdot A = B En...E2E1A=B

  • 通过结合律可以先将对 E n ⋅ . . . ⋅ E 2 ⋅ E 1 E_n \cdot ... \cdot E_2 \cdot E_1 En...E2E1 进行计算得到一个新的矩阵我们可以称它为 C C C
  • 由于初等矩阵具有可逆性质,所以我们可以在等号两边同时左乘一个 C − 1 C^{-1} C1

C − 1 ⋅ C ⋅ A = C − 1 ⋅ B C^{-1} \cdot C \cdot A =C^{-1} \cdot B C1CA=C1B
I ⋅ A = C − 1 ⋅ B I \cdot A =C^{-1} \cdot B IA=C1B
A = C − 1 ⋅ B A =C^{-1} \cdot B A=C1B
C − 1 = E 1 − 1 ⋅ E 2 − 1 ⋅ . . . ⋅ E n − 1 C^{-1} = E_1^{-1} \cdot E_2^{-1} \cdot ... \cdot E_n^{-1} C1=E11E21...En1

  • 这里化简后正好也就是一个 A = L ⋅ U A = L\cdot U A=LU 的形式
  • 而且通过高斯得到的结果B是一个上三角矩阵
  • 实际上初等变换要是不发生行交换操作,那么结果是一个下三角矩阵。

通过高斯消元的过程,我们可以找到LU分解的两个矩阵,一个为变换矩阵的逆矩阵,一个为消元结果矩阵

非方阵的LU分解

LU分解不但可以应用于方阵也可应用于非方阵。

列数大于行数

仍然采用高斯消元的进行矩阵LU的分解 n × m = n × n ⋅ n × m n×m = n×n \cdot n×m n×m=n×nn×m

例如对一个 4 × 6 4×6 4×6矩阵可以分解为 4 × 4 ⋅ 4 × 6 4×4 \cdot 4×6 4×44×6

{ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ } = { 1 0 0 0 ∗ 1 0 0 ∗ ∗ 1 0 ∗ ∗ ∗ 1 } ⋅ { ∗ ∗ ∗ ∗ ∗ ∗ 0 ∗ ∗ ∗ ∗ ∗ 0 0 ∗ ∗ ∗ ∗ 0 0 0 ∗ ∗ ∗ } \left\{ \begin{matrix} * & * & * & * & * & * \\ * & * & * & * & * & * \\ * & * & * & * & * & * \\ * & * & * & * & * & * \\ \end{matrix} \right\} = \left\{ \begin{matrix} 1 & 0 & 0 & 0 \\ * & 1 & 0 & 0 \\ * & * & 1 & 0 \\ * & * & * & 1 \\ \end{matrix} \right\} \cdot \left\{ \begin{matrix} * & * & * & * & * & * \\ 0 & * & * & * & * & * \\ 0 & 0 & * & * & * & * \\ 0 & 0 & 0 & * & * & * \\ \end{matrix} \right\} =1010010001000000

行数大于列数

这种情况可以有两种方式进行分解

方式1

采用高斯消元的思路分解 n × m = n × n ⋅ n × m n×m = n×n \cdot n×m n×m=n×nn×m

例如分解 4 × 3 4×3 4×3矩阵可以分解为 4 × 4 ⋅ 4 × 3 4×4 \cdot 4×3 4×44×3

{ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ } = { 1 0 0 0 ∗ 1 0 0 ∗ ∗ 1 0 ∗ ∗ ∗ 1 } ⋅ { ∗ ∗ ∗ 0 ∗ ∗ 0 0 ∗ 0 0 0 } \left\{ \begin{matrix} * & * & * \\ * & * & * \\ * & * & * \\ * & * & * \\ \end{matrix} \right\} = \left\{ \begin{matrix} 1 & 0 & 0 & 0 \\ * & 1 & 0 & 0 \\ * & * & 1 & 0 \\ * & * & * & 1 \\ \end{matrix} \right\} \cdot \left\{ \begin{matrix} * & * & * \\ 0 & * & * \\ 0 & 0 & * \\ 0 & 0 & 0 \\ \end{matrix} \right\} =1010010001000000

这种变换方式是对对于行的变换。

方式2

换个角度将其分解为 n × m = n × m ⋅ m × m n×m = n×m \cdot m×m n×m=n×mm×m (其中 n × m n×m n×m为下三角, m × m m×m m×m为上三角)

例如分解 4 × 3 4×3 4×3矩阵可以分解为 4 × 3 ⋅ 3 × 3 4×3 \cdot 3×3 4×33×3

{ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ } = { 1 0 0 ∗ 1 0 ∗ ∗ 1 ∗ ∗ ∗ } ⋅ { ∗ ∗ ∗ 0 ∗ ∗ 0 0 ∗ } \left\{ \begin{matrix} * & * & * \\ * & * & * \\ * & * & * \\ * & * & * \\ \end{matrix} \right\} = \left\{ \begin{matrix} 1 & 0 & 0 \\ * & 1 & 0 \\ * & * & 1 \\ * & * & * \\ \end{matrix} \right\} \cdot \left\{ \begin{matrix} * & * & * \\ 0 & * & * \\ 0 & 0 & * \\ \end{matrix} \right\} =101001000

我们知道一个矩阵 左乘 一个初等矩阵表示从行的角度来看是:加、减另一行,或某行缩放多少倍,或是交换某两行。

是否考虑过,右乘 初等矩阵 是什么意义?
实际上 右乘 初等矩阵表示对乘号左边矩阵的列进行变换:

  • 某一列加上、减去另一列
  • 某一列乘上一个常数(缩放)
  • 交换某两列

当明白了右乘的意义后,就可以对一个行数大于列数的矩阵通过一定变换,变换为一个下三角矩阵。

变换的方式就是按照高斯消元法的思路对矩阵中的列进行变换,并把变换的各初等矩阵的逆相乘,最终就可以得到变换矩阵,也就LU分解的结果之一。

比较

方式1相较方式2有更高的计算复杂度,因此一般库在处理此类问题可能会采用方式2实现。

LU分解示例 行数大于列数

对如下矩阵LU分解:

{ 1 2 2 3 4 3 2 6 3 4 5 12 } \left\{ \begin{matrix} 1 & 2 & 2 \\ 3 & 4 & 3 \\ 2 & 6 & 3 \\ 4 & 5 & 12 \\ \end{matrix} \right\} 1324246523312

高斯消元法思路是从行变换角度来达到消元的目标,现在我们从列变换的角度出发,对列消元。

从最左边的列开始,依次阶梯向下消元,使的每行的首元为1,首元后的行其他元素为0。

在这里插入图片描述

  • 第1行 第1列为 1 1 1是满足首元要求,因此不需要变换。
  • 第1行 第2列为 2 2 2,可以将 第2列减去2倍的第1列 达到消元效果,设该变换矩阵为 e 1 e_1 e1,如下:

{ 1 2 2 3 4 3 2 6 3 4 5 12 } ⋅ { 1 − 2 0 0 1 0 0 0 1 } = { 1 0 2 3 − 2 3 2 2 3 4 − 3 12 } \left\{ \begin{matrix} 1 & 2 & 2 \\ 3 & 4 & 3 \\ 2 & 6 & 3 \\ 4 & 5 & 12 \\ \end{matrix} \right\} \cdot \left\{ \begin{matrix} 1 & -2 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{matrix} \right\} = \left\{ \begin{matrix} 1 & 0 & 2 \\ 3 & -2 & 3 \\ 2 & 2 & 3 \\ 4 & -3 & 12 \\ \end{matrix} \right\} 1324246523312100210001=1324022323312

  • 第1行 第3列为 2 2 2,可以将 第3列减去2倍的第1列达到消元效果,设该右乘的变换矩阵为 e 2 e_2 e2,如下:

{ 1 0 2 3 − 2 3 2 2 3 4 − 3 12 } ⋅ { 1 0 − 2 0 1 0 0 0 1 } = { 1 0 0 3 − 2 − 3 2 2 − 1 4 − 3 4 } \left\{ \begin{matrix} 1 & 0 & 2 \\ 3 & -2 & 3 \\ 2 & 2 & 3 \\ 4 & -3 & 12 \\ \end{matrix} \right\} \cdot \left\{ \begin{matrix} 1 & 0 & -2 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{matrix} \right\} = \left\{ \begin{matrix} 1 & 0 & 0 \\ 3 & -2 & -3 \\ 2 & 2 & -1 \\ 4 & -3 & 4 \\ \end{matrix} \right\} 1324022323312100010201=132402230314

接下来对第2行进行消元:

  • 第2行 第2列为 − 2 -2 2,可以将 第2列乘 − 1 / 2 -1/2 1/2 满足首元为1,设该右乘的变换矩阵为 e 3 e_3 e3,如下:

{ 1 0 0 3 − 2 − 3 2 2 − 1 4 − 3 4 } ⋅ { 1 0 0 0 − 1 / 2 0 0 0 1 } = { 1 0 0 3 1 − 3 2 − 1 − 1 4 1.5 4 } \left\{ \begin{matrix} 1 & 0 & 0 \\ 3 & -2 & -3 \\ 2 & 2 & -1 \\ 4 & -3 & 4 \\ \end{matrix} \right\} \cdot \left\{ \begin{matrix} 1 & 0 & 0 \\ 0 & -1/2 & 0 \\ 0 & 0 & 1 \\ \end{matrix} \right\} = \left\{ \begin{matrix} 1 & 0 & 0 \\ 3 & 1 & -3 \\ 2 & -1 & -1 \\ 4 & 1.5 & 4 \\ \end{matrix} \right\} 13240223031410001/20001=13240111.50314

  • 第2行 第3列 − 3 -3 3,可以将 第3列加3倍的第2列 达到消元效果,设该右乘的变换矩阵为 e 4 e_4 e4,如下:

{ 1 0 0 3 1 − 3 2 − 1 − 1 4 1.5 4 } ⋅ { 1 0 0 0 1 3 0 0 1 } = { 1 0 0 3 1 0 2 − 1 − 4 4 1.5 8.5 } \left\{ \begin{matrix} 1 & 0 & 0 \\ 3 & 1 & -3 \\ 2 & -1 & -1 \\ 4 & 1.5 & 4 \\ \end{matrix} \right\} \cdot \left\{ \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 3 \\ 0 & 0 & 1 \\ \end{matrix} \right\} = \left\{ \begin{matrix} 1 & 0 & 0 \\ 3 & 1 & 0 \\ 2 & -1 & -4 \\ 4 & 1.5 & 8.5 \\ \end{matrix} \right\} 13240111.50314100010031=13240111.50048.5

接下来对第3行进行消元:

  • 第3行第3列为 − 4 -4 4,可以将 第3列乘 − 1 / 4 -1/4 1/4 满足首元为1,设该右乘的变换矩阵为 e 5 e_5 e5,最终消元结果矩阵为 L L L,如下:

{ 1 0 0 3 1 0 2 − 1 − 4 4 1.5 8.5 } ⋅ { 1 0 0 0 1 0 0 0 − 1 / 4 } = { 1 0 0 3 1 0 2 − 1 1 4 1.5 − 2.125 } \left\{ \begin{matrix} 1 & 0 & 0 \\ 3 & 1 & 0 \\ 2 & -1 & -4 \\ 4 & 1.5 & 8.5 \\ \end{matrix} \right\} \cdot \left\{ \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & -1/4 \\ \end{matrix} \right\} = \left\{ \begin{matrix} 1 & 0 & 0 \\ 3 & 1 & 0 \\ 2 & -1 & 1 \\ 4 & 1.5 & -2.125 \\ \end{matrix} \right\} 13240111.50048.5100010001/4=13240111.50012.125

这样我们通过一系列的消元得到了一个下三角矩阵。

A ⋅ e 1 ⋅ e 2 ⋅ e 3 ⋅ e 4 ⋅ e 5 = L A \cdot e_1 \cdot e_2 \cdot e_3 \cdot e_4 \cdot e_5 = L \\ Ae1e2e3e4e5=L

这里在等号两边依次右乘上相应变换矩阵的逆,消去左边的变换矩阵,只留下 A A A

A ⋅ e 1 ⋅ e 2 ⋅ e 3 ⋅ e 4 ⋅ e 5 ⋅ e 5 − 1 ⋅ e 4 − 1 ⋅ e 3 − 1 ⋅ e 2 − 1 ⋅ e 1 − 1 = L ⋅ e 5 − 1 ⋅ e 4 − 1 ⋅ e 3 − 1 ⋅ e 2 − 1 ⋅ e 1 − 1 A \cdot e_1 \cdot e_2 \cdot e_3 \cdot e_4 \cdot e_5 \cdot e_5^{-1} \cdot e_4^{-1} \cdot e_3^{-1} \cdot e_2^{-1} \cdot e_1^{-1}= L \cdot e_5^{-1} \cdot e_4^{-1} \cdot e_3^{-1} \cdot e_2^{-1} \cdot e_1^{-1} \\ Ae1e2e3e4e5e51e41e31e21e11=Le51e41e31e21e11

通过结合律,我们就可得到矩阵 U U U

A = L ⋅ ( e 5 − 1 ⋅ e 4 − 1 ⋅ e 3 − 1 ⋅ e 2 − 1 ⋅ e 1 − 1 ) A = L \cdot (e_5^{-1} \cdot e_4^{-1} \cdot e_3^{-1} \cdot e_2^{-1} \cdot e_1^{-1}) A=L(e51e41e31e21e11)

U = e 5 − 1 ⋅ e 4 − 1 ⋅ e 3 − 1 ⋅ e 2 − 1 ⋅ e 1 − 1 U = e_5^{-1} \cdot e_4^{-1} \cdot e_3^{-1} \cdot e_2^{-1} \cdot e_1^{-1} U=e51e41e31e21e11
通过计算 e 5 − 1 ⋅ e 4 − 1 ⋅ e 3 − 1 ⋅ e 2 − 1 ⋅ e 1 − 1 e_5^{-1} \cdot e_4^{-1} \cdot e_3^{-1} \cdot e_2^{-1} \cdot e_1^{-1} e51e41e31e21e11,可得到 U U U为:

{ 1 2 2 0 − 2 − 3 0 0 − 4 } \left\{ \begin{matrix} 1 & 2 & 2\\ 0 & -2 & -3 \\ 0 & 0 & -4\\ \end{matrix} \right\} 100220234

参考文献

[1]. 慕课网 .
专为程序员设计的线性代数课程 . liuyubobobo . https://coding.imooc.com/learn/list/260.html

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值