【机器学习数学基础-线性代数】1.3 解线性方程组

【回顾】 线性方程组的一般形式:
a 11 x 1 + . . . + a 1 n x n = b 1 . . . a m 1 x 1 + . . . + a m n x n = b m a_{11}x_1+...+a_{1n}x_n=b_1\\ ...\\ a_{m1}x_1+...+a_{mn}x_{n}=b_{m} a11x1+...+a1nxn=b1...am1x1+...+amnxn=bm
其中的 a i j , b i a_{ij},b_i aij,bi是已知常数; x j x_j xj是未知数。后来,我们引入了向量和矩阵的概念,并得到了更简洁的线性方程组表示形式:
A x = b \bold{Ax=b} Ax=b
在本小节中,我们将探讨如何求解线性方程组,并给出一种求逆矩阵的算法。

一、特解和通解
为了说明此概念,我们考虑一个线性方程组:
[ 1 0 8 − 4 0 1 2 12 ] [ x 1 x 2 x 3 x 4 ] = [ 42 8 ] {\left[ \begin{array}{cccc} 1&0&8&-4\\ 0&1&2&12 \end{array} \right]} {\left[ \begin{array}{ccc} x_1\\ x_2\\ x_3\\ x_4 \end{array} \right]} ={\left[ \begin{array}{ccc} 42\\8 \end{array} \right]} [100182412]x1x2x3x4=[428]
可以看出,这个线性方程组由两个等式和四个未知数构成。因此一个很直觉的事就是,这个线性方程组应该有无穷多个解。进一步观察,可以发现系数矩阵的前两列均仅有一个1和一个0。考察 b \bold{b} b的形式后,我们可以发现:
b = [ 42 8 ] = 42 [ 1 0 ] + 8 [ 0 1 ] \bold{b}={\left[ \begin{array}{cccc} 42\\8 \end{array} \right]}=42 {\left[ \begin{array}{ccc} 1\\0 \end{array} \right]}+8 {\left[ \begin{array}{ccc} 0\\1 \end{array} \right]} b=[428]=42[10]+8[01]
因此,我们可以快速地构建一个解: [ 42 , 8 , 0 , 0 ] T [42,8,0,0]^T [42,8,0,0]T,这个解就叫做特解。然而,这并不是这个线性方程组的唯一的解。为了获取所有的解,我们需要更加充分地考虑系数矩阵,而不是以一种简单、直觉的方式。而寻求全部解的一个非常直觉的想法就是:在特解的基础上加 0 \bold{0} 0,这样就可以使得线性方程组保持成立。按照这个思路求出的所有解,我们称作通解
下面,我们开始考虑系数矩阵的第三列,将其用第一列和第二列的表示为:
[ 8 2 ] = 8 [ 1 0 ] + 2 [ 0 1 ] {\left[ \begin{array}{cccc} 8\\2 \end{array} \right]}=8 {\left[ \begin{array}{ccc} 1\\0 \end{array} \right]}+2 {\left[ \begin{array}{ccc} 0\\1 \end{array} \right]} [82]=8[10]+2[01]
据此,我们可以开始用系数矩阵的每一列来构建 0 \bold{0} 0,即:
[ 0 0 ] = 8 [ 1 0 ] + 2 [ 0 1 ] − 1 [ 8 2 ] + 0 [ − 4 12 ] {\left[ \begin{array}{cccc} 0\\0 \end{array} \right]}=8 {\left[ \begin{array}{ccc} 1\\0 \end{array} \right]}+2 {\left[ \begin{array}{ccc} 0\\1 \end{array} \right]}-1 {\left[ \begin{array}{ccc} 8\\2 \end{array} \right]}+0 {\left[ \begin{array}{ccc} -4\\12\end{array} \right]} [00]=8[10]+2[01]1[82]+0[412]
而任何实数乘以 0 \bold0 0还是 0 \bold0 0。据此我们可以进一步地扩展解的范围(注意:虽然现在已经包含无穷多个解,但仍不是通解。因为还没有考虑到第四列系数矩阵对解的影响):
x = [ 42 8 0 0 ] + λ 1 [ 8 2 − 1 0 ] , λ 1 ∈ R \bold{x}= {\left[ \begin{array}{cccc} 42\\8\\0\\0 \end{array} \right]} +\lambda_1 {\left[ \begin{array}{ccc} 8\\2\\-1\\0 \end{array} \right]} ,\lambda_1\in\mathbb{R} x=42800+λ18210,λ1R
同样地,我们考虑系数矩阵的第四列,其可以用第一列和第二列表示为:
[ − 4 12 ] = − 4 [ 1 0 ] + 12 [ 0 1 ] {\left[ \begin{array}{cccc} -4\\12 \end{array} \right]}=-4 {\left[ \begin{array}{ccc} 1\\0 \end{array} \right]}+12 {\left[ \begin{array}{ccc} 0\\1 \end{array} \right]} [412]=4[10]+12[01]
然后,利用上式构建 0 \bold0 0
[ 0 0 ] = − 4 [ 1 0 ] + 12 [ 0 1 ] + 0 [ 8 2 ] − 1 [ − 4 12 ] {\left[ \begin{array}{cccc} 0\\0 \end{array} \right]}=-4 {\left[ \begin{array}{ccc} 1\\0 \end{array} \right]}+12 {\left[ \begin{array}{ccc} 0\\1 \end{array} \right]}+0 {\left[ \begin{array}{ccc} 8\\2 \end{array} \right]}-1 {\left[ \begin{array}{ccc} -4\\12\end{array} \right]} [00]=4[10]+12[01]+0[82]1[412]
最后,再根据上式扩展线性方程组的解,就可以得到通解,如下:
x = [ 42 8 0 0 ] + λ 1 [ 8 2 − 1 0 ] + λ 2 [ − 4 12 0 − 1 ] , λ 1 , λ 2 ∈ R \bold{x}= {\left[ \begin{array}{cccc} 42\\8\\0\\0 \end{array} \right]} +\lambda_1 {\left[ \begin{array}{ccc} 8\\2\\-1\\0 \end{array} \right]} +\lambda_2 {\left[ \begin{array}{ccc} -4\\12\\0\\-1 \end{array} \right]} ,\lambda_1,\lambda_2\in\mathbb{R} x=42800+λ18210+λ241201,λ1,λ2R
注意:这里得到了通解的原因是已经完全考虑了整个系数矩阵对解的影响。

现在,我们归纳整理一下解线性方程组的几个步骤

  • 找到 A x = b \bold{Ax=b} Ax=b的一组特解;
  • 找到 A x = 0 \bold{Ax=0} Ax=0的所有可能解;
  • 将上述两步寻得的解结合起来,就得到了线性方程组的通解。

注意:通解和特解都不是唯一的。
我们可以发现,解这个线性方程组是比较简单的。这是因为,系数矩阵的形式非常简单。而事实上,大多数的系数矩阵并不是如此简单,甚至可以说是非常复杂。因此,我们需要一种算法来将系数矩阵变换为简单形式,即:高斯消元法,而高斯消元法的关键是初等变换。因此,我们将先探讨关于初等变换的知识。

二、初等变换
解线性方程组的关键点就是初等变换。初等变换能够保持解集不变,但将线性方程组转换为更简单的形式,其包含:

  • 【变换一】将线性方程组中任意两个等式的位置互换;
  • 【变换二】用任意常数 λ ∈ R \lambda\in\mathbb{R} λR同时乘以任意等式的两侧;
  • 【变换三】将任意两个等式相加,并替换掉其中两个等式中的一个。

我们还是以一个线性方程组为例来进一步阐述:
− 2 x 1 + 4 x 2 − 2 x 3 − x 4 + 4 x 5 = − 3 4 x 1 − 8 x 2 + 3 x 3 − 3 x 4 + x 5 = 2 x 1 − 2 x 2 + x 3 − x 4 + x 5 = 0 x 1 − 2 x 2 − 3 x 4 + 4 x 5 = a -2x_1+4x_2-2x_3-x_4+4x_5=-3\\ 4x_1-8x_2+3x_3-3x_4+x_5=2\\ x_1-2x_2+x_3-x_4+x_5=0\\ x_1-2x_2-3x_4+4x_5=a 2x1+4x22x3x4+4x5=34x18x2+3x33x4+x5=2x12x2+x3x4+x5=0x12x23x4+4x5=a
【定义1.3.1-增广矩阵】 我们将线性方程组 A x = b \bold{Ax=b} Ax=b中的系数矩阵 A \bold{A} A和偏置矩阵 b \bold{b} b合并为一个矩阵 [ A ∣ b ] \bold{[A|b]} [Ab],这个矩阵就叫该线性方程组的增广矩阵。

根据定义,我们可以写出上述线性方程组的增广矩阵为:
[ − 2 4 − 2 − 1 4 ∣ − 3 4 − 8 3 − 3 1 ∣ 2 1 − 2 1 − 1 1 ∣ 0 1 − 2 0 − 3 4 ∣ a ] {\left[ \begin{array}{cccc} -2&4&-2&-1&4&|&-3\\ 4&-8&3&-3&1&|&2\\ 1&-2&1&-1&1&|&0\\ 1&-2&0&-3&4&|&a \end{array} \right]} 24114822231013134114320a
现在我们利用三条初等变换来化简该矩阵。为了方便说明,我们用 R 1 , R 2 , R 3 , R 4 R_1,R_2,R_3,R_4 R1,R2,R3,R4来表示增广矩阵的四行。
【Step1】将 R 1 R_1 R1 R 3 R_3 R3互换位置(变换一)
[ 1 − 2 1 − 1 1 ∣ 0 4 − 8 3 − 3 1 ∣ 2 − 2 4 − 2 − 1 4 ∣ − 3 1 − 2 0 − 3 4 ∣ a ] {\left[ \begin{array}{cccc} 1&-2&1&-1&1&|&0\\ 4&-8&3&-3&1&|&2\\ -2&4&-2&-1&4&|&-3\\ 1&-2&0&-3&4&|&a \end{array} \right]} 14212842132013131144023a
【Step2】将 − 4 R 1 , 2 R 1 , − R 1 -4R_1,2R_1,-R_1 4R1,2R1,R1分别加到 R 2 , R 3 , R 4 R_2,R_3,R_4 R2,R3,R4上去(变换二、三)
[ 1 − 2 1 − 1 1 ∣ 0 0 0 − 1 1 − 3 ∣ 2 0 0 0 − 3 6 ∣ − 3 0 0 − 1 − 2 3 ∣ a ] {\left[ \begin{array}{cccc} 1&-2&1&-1&1&|&0\\ 0&0&-1&1&-3&|&2\\ 0&0&0&-3&6&|&-3\\ 0&0&-1&-2&3&|&a \end{array} \right]} 10002000110111321363023a
【Step3】将 − R 2 − R 3 -R_2-R_3 R2R3加到 R 4 R_4 R4上去(变换二、三)
[ 1 − 2 1 − 1 1 ∣ 0 0 0 − 1 1 − 3 ∣ 2 0 0 0 − 3 6 ∣ − 3 0 0 0 0 0 ∣ a + 1 ] {\left[ \begin{array}{cccc} 1&-2&1&-1&1&|&0\\ 0&0&-1&1&-3&|&2\\ 0&0&0&-3&6&|&-3\\ 0&0&0&0&0&|&a+1 \end{array} \right]} 10002000110011301360023a+1
【Step4】将 R 2 R_2 R2整体乘以-1,将 R 3 R_3 R3整体乘以-1/3(变换二)
[ 1 − 2 1 − 1 1 ∣ 0 0 0 1 − 1 3 ∣ − 2 0 0 0 1 − 2 ∣ 1 0 0 0 0 0 ∣ a + 1 ] {\left[ \begin{array}{cccc} 1&-2&1&-1&1&|&0\\ 0&0&1&-1&3&|&-2\\ 0&0&0&1&-2&|&1\\ 0&0&0&0&0&|&a+1 \end{array} \right]} 10002000110011101320021a+1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值