线性代数学习笔记4-2:对线性方程组的理解、高斯消元法、LU分解

线性方程组

线性方程组:包含多个未知量,但每个未知量次数为1,且只做加法
线性方程组可以写为 A x ⃗ = b ⃗ \mathbf A\vec x=\vec b Ax =b

  • 如果 b ⃗ \vec b b 为零向量,称为齐次线性方程组
  • 否则,称为非齐次线性方程组

从不同角度看线性方程组

对于一个线性方程组
{ 2 x − y = 1 − x + 2 y − z = 1 − 3 y + 4 z = − 3 \begin{cases} 2x-y=1\\ -x+2y-z=1\\ -3y+4z=-3 \end{cases} 2xy=1x+2yz=13y+4z=3
我们可以从三个角度来观察:(假定方程组有解)

  1. 观察每行:每行对应三维空间中的一个平面,我们希望找出三个平面的交点
  2. 观察每列:写成列向量的形式
    x [ 2 − 1 0 ] + y [ − 1 2 − 3 ] + z [ 0 − 1 4 ] = [ 1 1 − 3 ] x\begin{bmatrix}2\\-1\\0\end{bmatrix}+y\begin{bmatrix}-1\\2\\-3\end{bmatrix}+z\begin{bmatrix}0\\-1\\4\end{bmatrix}=\begin{bmatrix}1\\1\\-3\end{bmatrix} x 210 +y 123 +z 014 = 113
    这就是说,对于三维空间中的三个向量,我们要求解它们的线性组合的系数,得到目标向量
  3. 写成矩阵形式:
    [ 2 − 1 0 − 1 2 − 1 0 − 3 4 ] [ x y z ] = [ 1 1 − 3 ] \begin{bmatrix}2&-1&0\\-1&2&-1\\0&-3&4\end{bmatrix}\begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}1\\1\\-3\end{bmatrix} 210123014 xyz = 113
    也即:
    A x = b \mathbf A\boldsymbol x=\boldsymbol b Ax=b
    这就是说,对于三维空间中的一个未知向量 x \boldsymbol x x,经过某个线性变换后,得到另一向量 b \boldsymbol b b,我们要求解未知向量 x \boldsymbol x x

理解方程组的几何意义,多从角度2(多个列向量的线性组合)与角度3(向量的线性变换)入手

上面的角度3,形式更为简洁,并且完善的相关理论,可以用于方程的求解,因此更加具有普适性,这也就是利用线性代数求解线性方程组

一般的,线性方程组可以写为 A x = v \mathbf A \boldsymbol x=\boldsymbol v Ax=v(当 v \boldsymbol v v为零向量,称为齐次线性方程组)

高斯消元法

对于线性方程组,写成矩阵向量乘法形式 A x = v \mathbf A\boldsymbol x=\boldsymbol v Ax=v

消元法的核心在于,将方程组的各行相互加减(矩阵的初等行变换),使得方程组各行的未知数减少

例如,对于方程组 { x + 2 y + 1 = 2 3 x + 8 y + z = 12 4 y + 1 z = 2 \begin{cases}x+2y+1=2\\3x+8y+z=12\\4y+1z=2\end{cases} x+2y+1=23x+8y+z=124y+1z=2我们希望消元后的矩阵形式如下: { x + 2 y + 1 = 2 2 y − 2 z = 6 5 z = − 10 \begin{cases}x+2y+1=2\\2y-2z=6\\5z=-10\end{cases} x+2y+1=22y2z=65z=10这样,我们可以从下往上回带 z 、 y 、 x z、y、x zyx的值,最终求解方程

下面用系数矩阵 A \mathbf A A代替整个方程组,则高斯消元的一般步骤是:

  1. 从上往下处理每一行系数矩阵 A \mathbf A A
  2. 每一行可能需要做初等行变换(行交换和行之间的加减),最终目标是:保证这行的主元pivot(位于主对角线的元素)不为0,并且主元下方的所有元素都是0
  3. 处理完毕后,系数矩阵 A \mathbf A A是一个上三角阵,且所有主元不为0,再从最后一行开始求解未知数,依次向上回带即可

最终若不可避免的出现主元为0
对于未知数个数>方程个数的情况:除了主元列还有自由列,无穷解;
若某行所有元素都为0,且方程的这一行出现“0=1”等结果的情况,无解;

线性代数的视角看高斯消元

写出方程组对应的增广矩阵,上面的操作,等价于对增广矩阵不断做初等行变换
目标:从原始系数矩阵 A \mathbf A A变换到一个上三角阵(Uppertriangular matrix) U \mathbf U U
具体的步骤是:

  • 原矩阵 -> 将矩阵的元素 a 21 a_{21} a21变为0 -> 将矩阵的元素 a 31 a_{31} a31变为0 ->将矩阵的元素 a 32 a_{32} a32变为0
  • [ 1 2 1 2 3 8 1 12 0 4 1 2 ] → [ 1 2 1 2 0 2 − 2 6 0 4 1 2 ] → a 31 本身就是 0 → [ 1 2 1 2 0 2 − 2 6 0 0 5 − 10 ] \begin{bmatrix}1&2&1&2\\3&8&1&12\\0&4&1&2\end{bmatrix}\rightarrow\begin{bmatrix}1&2&1&2\\0&2&-2&6\\0&4&1&2\end{bmatrix}\rightarrow a_{31}本身就是0\rightarrow\begin{bmatrix}1&2&1&2\\0&2&-2&6\\0&0&5&-10\end{bmatrix} 1302841112122 100224121262 a31本身就是0 1002201252610

下面引入矩阵

之前说过,矩阵 A \mathbf A A行变换,等价于有一个矩阵左乘矩阵 A \mathbf A A

  • 这里的消元操作(初等行变换)对应一个消元矩阵(Elimination Matrices),记为 E \mathbf E E
  • E \mathbf E E是由多次初等行变换组合得到的, E = E 32 E 31 E 21 \mathbf E=\mathbf E_{32}\mathbf E_{31}\mathbf E_{21} E=E32E31E21 E 21 \mathbf E_{21} E21对应上面将矩阵的 a 21 a_{21} a21变为0的步骤), E 21 \mathbf E_{21} E21等三个矩阵称为初等矩阵(Elementary Matrix)

这个例子中,第一步是行2减去3倍的行1,因此 E 21 = [ 1 0 0 − 3 1 0 0 0 1 ] \mathbf E_{21}=\begin{bmatrix}1&0&0\\-3&1&0\\0&0&1\end{bmatrix} E21= 130010001 ,其余矩阵同理

最终,方程组的高斯消元法,矩阵的表示就是 E A = U \mathbf E\mathbf A=\mathbf U EA=U,即:我们将系数矩阵化为了上三角阵

注意,这里的初等行变换,不改变列向量的关系,不会改变解,而只是改变了行向量的关系,最终将求解 A x = v \mathbf A\boldsymbol x=\boldsymbol v Ax=v变为求解 U x = v ′ \mathbf U\boldsymbol x=\boldsymbol v' Ux=v U \mathbf U U是上三角阵,理解为只保留了 A \mathbf A A中的最重要的信息,也使得方程求解更简单

矩阵的LU分解

矩阵的分解就好比多项式的因式分解,“分解”后的结果让我们更容易看清本质

利用消元法,我们能将 A \mathbf A A转化为上三角阵 U \mathbf U U E A = U \mathbf E\mathbf A=\mathbf U EA=U
方程两边同时乘以 E − 1 = L \mathbf E^{-1}=\mathbf L E1=L得到( E \mathbf E E对应初等行变换,必然可逆) A = L U \mathbf A=\mathbf L\mathbf U A=LU
E A = U \mathbf E\mathbf A=\mathbf U EA=U A = L U \mathbf A=\mathbf L\mathbf U A=LU,这里引入LU分解,即:将矩阵分解为两个矩阵,其中一个为上三角阵
(ps. 该式只对于消元过程中没有行交换的情况成立,有时为了保证主元不为0需要行交换,此情况在后面讨论)

其中 L = E − 1 = ( E 32 E 31 E 21 ) − 1 = E 21 − 1 E 31 − 1 E 32 − 1 \mathbf L=\mathbf E^{-1}=(\mathbf E_{32}\mathbf E_{31}\mathbf E_{21})^{-1}=\mathbf E_{21}^{-1}\mathbf E_{31}^{-1}\mathbf E_{32}^{-1} L=E1=(E32E31E21)1=E211E311E321,由于消元的规则, L \mathbf L L必然为一个下三角阵(Lower triangular matrix)

进一步的,有时还将上三角阵进一步分解为对角阵(diagonal matrix)和上三角阵
即:将 A = L U \mathbf A=\mathbf L\mathbf U A=LU写为 A = L D U \mathbf A=\mathbf L\mathbf D\mathbf U A=LDU
对应
[ 2 1 8 7 ] = [ 1 0 4 1 ] [ 2 1 0 3 ] = [ 1 0 4 1 ] [ 2 0 0 3 ] [ 1 1 / 2 0 1 ] \begin{bmatrix}2&1\\8&7\end{bmatrix}=\begin{bmatrix}1&0\\4&1\end{bmatrix}\begin{bmatrix}2&1\\0&3\end{bmatrix}=\begin{bmatrix}1&0\\4&1\end{bmatrix}\begin{bmatrix}2&0\\0&3\end{bmatrix}\begin{bmatrix}1&1/2\\0&1\end{bmatrix} [2817]=[1401][2013]=[1401][2003][101/21]

LU分解有什么用

对于计算机求解方程,如果直接使用高斯消元法,即 E A = U \mathbf E\mathbf A=\mathbf U EA=U这里从A到上三角阵U的过程中,存在重复运算(例如,①从行2减去行1,从行3减去行1;②再从行3减去行2…这里②处间接的用行3减去行1,这是没有必要的),最终的回带过程也引入了计算量

这种做法,运算量非常大
一方面,如上面所说, E \mathbf E E矩阵会导致各行直接的多余运算
另一方面,实际中的Ax=v,系数矩阵A一般不变,而v不断变化,则v每次变化后,都要重新消元

而应用了LU分解后,矩阵的A的消元和方程组的求解分离开来了,求解方程变为:

  • A分解为A=LU
  • 当v变化时求解LUx=v,先将Ux视作一个整体的y,通过Ly=v解出y,然后Ux=y,就能解得X

虽然 E \mathbf E E L \mathbf L L都是下三角阵,但它们带来的运算量截然不同:
E A = U \mathbf E\mathbf A=\mathbf U EA=U在等式左侧操作,①从行2减去行1,从行3减去行1;②再从行3减去行2…由上可知这样会带来行1和行3的重复运算
A = L U \mathbf A=\mathbf L\mathbf U A=LU在等式右侧操作,行之间的运算顺序是倒过来的:①对行3加行2;②对行3加行1,对行2加行1…所以不会出现重复运算
Eg.对于某个 E = [ 1 0 0 − 2 1 0 − 10 − 5 1 ] \mathbf E=\begin{bmatrix}1&0&0\\-2&1&0\\-10&-5&1\end{bmatrix} E= 1210015001 ,其对应的 L = E − 1 = [ 1 0 0 2 1 0 0 5 1 ] \mathbf L=\mathbf E^{-1}=\begin{bmatrix}1&0&0\\2&1&0\\0&5&1\end{bmatrix} L=E1= 120015001 ,U中的第三行与第一行不存在关系,只做了最少的必须的运算,并且我们发现,只要知道消元时所需的消元乘数,把这些消元乘数(2和5)直接写进矩阵,就能得到所需的L矩阵!

最终,对于计算机而言,LU分解能减少运算的次数

推广:有行变换时的LU分解

对于高斯消元法,在上面的讨论中我们始终假定不会出现“主元为0,需要进行行变换”的情况,然而在实际中更常见的情况是,在消元时为了保证系数矩阵 A \mathbf A A的主元不为0,必须进行各行的交换

用一个置换矩阵 P \mathbf P P(行重新排列过的单位阵)代表所有的行交换,即 A = L U \mathbf A=\mathbf L\mathbf U A=LU推广为: P A = L U \mathbf P\mathbf A=\mathbf L\mathbf U PA=LU(ps.其中L为下三角阵,U为上三角阵,且对于任意的可逆矩阵 A \mathbf A A,都有这种分解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值