数学基础之代数学(3)——线性方程组求解

数学基础之代数学(3)——线性方程组求解

1、基础概念
求解线性方程组,顾名思义,线性代表是一次变量,方程组则代表是多元变量,因此,我们在这里可以给出线性方程组的一般性格式:
{ a 1 , 1 x 1 + a 1 , 2 x 2 + ⋯ + a 1 , n x n = b 1                               ⋮ a m , 1 x 1 + a m , 2 x 2 + ⋯ + a m , n x n = b m \begin{cases}a_{1,1}x_1+a_{1,2}x_2+\cdots+a_{1,n}x_n=b_1\\\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\vdots\\\\a_{m,1}x_1+a_{m,2}x_2+\cdots+a_{m,n}x_n=b_m\end{cases} a1,1x1+a1,2x2++a1,nxn=b1                             am,1x1+am,2x2++am,nxn=bm
也可以借助矩阵的概念,将其简化为 A x = b Ax=b Ax=b,其中 A A A m × n m\times n m×n的矩阵, x x x n n n维列向量(即 n n n 1 1 1列), b b b m m m维列向量,即 ( a 1 , 1 ⋯ a 1 , n ⋮ ⋱ ⋮ a m , 1 ⋯ a m , n ) ( x 1 ⋮ x n ) = ( b 1 ⋮ b m ) \left(\begin{matrix}a_{1,1}&\cdots&a_{1,n}\\\\\vdots&\ddots&\vdots\\\\a_{m,1}&\cdots&a_{m,n}\end{matrix}\right)\left(\begin{matrix}x_1\\\\\vdots\\\\x_n\end{matrix}\right)=\left(\begin{matrix}b_1\\\\\vdots\\\\b_m\end{matrix}\right) a1,1am,1a1,nam,nx1xn=b1bm

2、高斯消元法
高斯消元法在本质上还是借助了行列式的算法——先进行初等变换,将矩阵消成上三角矩阵,最终进行求解。这里我们先来看一下矩阵的初等变换:
( 1 ) (1) (1) 行初等变换:
a. 互换矩阵任意两行
b. 矩阵任意一行乘以任意非 0 0 0常数
c. 将矩阵任意一行的 k k k倍加到另一行上
( 2 ) (2) (2) 列初等变换:
a. 互换矩阵任意两列
b. 矩阵任意一列乘以任意非 0 0 0常数
c. 将矩阵任意一列的 k k k倍加到另一列上
下面我们还要简单了解一下增广矩阵:增广矩阵(又称扩增矩阵)就是在系数矩阵的右边添上一列,这一列是线性方程组的等号右边的值,即
( a 1 , 1 ⋯ a 1 , n b 1 ⋮ ⋱ ⋮ ⋮ a m , 1 ⋯ a m , n b m ) \left(\begin{matrix}a_{1,1}&\cdots&a_{1,n}&b_1\\\\\vdots&\ddots&\vdots&\vdots\\\\a_{m,1}&\cdots&a_{m,n}&b_m\end{matrix}\right) a1,1am,1a1,nam,nb1bm
而将矩阵化为上三角矩阵的一般性做法是对每列进行依次处理,比如当前处理到第 j j j列,第 i i i行以前的行已经固定了,需要将第 i i i行一下该列所有系数都消 0 0 0。若第 i i i行以下包括第 i i i行本身的第 j j j个元素已经全部都是 0 0 0了,就直接处理下一列。否则选取一个第 j j j个元素不为 0 0 0的行与第 i i i行交换,这里注意,若第 i i i行的第 j j j列本身就不等于 0 0 0,则需跳过本步骤。此时称第 i i i行为主行,主行的第 j j j个元素称为主元,再利用行初等变换将第 j j j列上第 i i i行以下的所有系数消 0 0 0,然后处理下一行和下一列,直至初始矩阵被消为上三角矩阵。
下面我们来看一个简单的例子,现在我们有方程组待求解 { 1 × x 1 + 1 × x 2 + 1 × x 3 = 1 1 × x 1 + 1 × x 2 + 2 × x 3 = 2 1 × x 1 + 2 × x 2 + 3 × x 3 = 6 \begin{cases}1\times x_1+1\times x_2+1\times x_3=1\\\\1\times x_1+1\times x_2+2\times x_3=2\\\\1\times x_1+2\times x_2+3\times x_3=6\end{cases} 1×x1+1×x2+1×x3=11×x1+1×x2+2×x3=21×x1+2×x2+3×x3=6,首先我们可以得到一个增广矩阵 ( 1 1 1 1 1 1 2 2 1 2 3 6 ) \left(\begin{matrix}1&1&1&1\\\\1&1&2&2\\\\1&2&3&6\end{matrix}\right) 111112123126,下面开始高斯消元:
1.处理第一列,第一行第一列的元素 1 1 1自动成为主元,处理第二行,将第一行的 − 1 -1 1倍加在第二行上,原矩阵化为 ( 1 1 1 1 0 0 1 1 1 2 3 6 ) \left(\begin{matrix}1&1&1&1\\\\0&0&1&1\\\\1&2&3&6\end{matrix}\right) 101102113116,下面处理第三行,将第一行的 − 1 -1 1倍加在第三行上,矩阵化为 ( 1 1 1 1 0 0 1 1 0 1 2 5 ) \left(\begin{matrix}1&1&1&1\\\\0&0&1&1\\\\0&1&2&5\end{matrix}\right) 100101112115
2.处理第二列,第一行已经固定,第二行第二列的元素为 0 0 0,因此第三行第二列的元素 1 1 1自动成为主元,调换第二行与第三行顺序,矩阵化为 ( 1 1 1 1 0 1 2 5 0 0 1 1 ) \left(\begin{matrix}1&1&1&1\\\\0&1&2&5\\\\0&0&1&1\end{matrix}\right) 100110121151
处理完毕,得到简化后的方程组 { 1 × x 1 + 1 × x 2 + 1 × x 3 = 1 1 × x 2 + 2 × x 3 = 5 1 × x 3 = 1 \begin{cases}1\times x_1+1\times x_2+1\times x_3=1\\\\1\times x_2+2\times x_3=5\\\\1\times x_3=1\end{cases} 1×x1+1×x2+1×x3=11×x2+2×x3=51×x3=1,解得 { x 1 = − 3 x 2 = 3 x 3 = 1 \begin{cases} x_1=-3\\\\x_2=3\\\\x_3=1\end{cases} x1=3x2=3x3=1,经检验成立。
注意,有时候我们最终会遇见 0 × x i = 0 0\times x_i=0 0×xi=0或者 0 × x i = a 0\times x_i=a 0×xi=a的情况,前者代表有无穷多组解,后者则意味着无解,其余的情况都是唯一解。这些其实可以通过矩阵的秩看出来,这里就不细说了,有机会的话再写点线性代数的博客。

3、克莱姆法则
当基础概念中的系数矩阵 A A A规格为 n × n n\times n n×n时,我们可以使用克莱姆法则进行求解,直接得到 x i = D i D x_i=\frac{D_i}{D} xi=DDi,其中 D D D A A A的行列式(即 D D D=|A|), D i D_i Di是将 A A A中第 i i i列替换为 b b b后得到的矩阵的行列式。继续看上述上述例子,易知 D = ∣ 1 1 1 1 1 2 1 2 3 ∣ = − 1 , D 2 = ∣ 1 1 1 1 2 2 1 6 3 ∣ = − 3 ⇒ x 2 = D 2 D = 3 D=\left|\begin{matrix}1&1&1\\\\1&1&2\\\\1&2&3\end{matrix}\right|=-1,D_2=\left|\begin{matrix}1&1&1\\\\1&2&2\\\\1&6&3\end{matrix}\right|=-3\Rightarrow x_2=\frac{D_2}{D}=3 D=111112123=1,D2=111126123=3x2=DD2=3

4、算法妙用
矩阵求逆:对于一个 n × n n\times n n×n的非奇异矩阵,在矩阵右侧添加一个 n × n n\times n n×n的单位矩阵,形成一个规格为 n × 2 n n\times 2n n×2n的矩阵,对其进行高斯消元,当左侧原非奇异矩阵被化为单位矩阵时,右侧添加的 n × n n\times n n×n单位矩阵也被化为了原非奇异矩阵的逆。

5、注意
a. 由于在消元过程中需要用到除法,所有会有浮点数运算带来的精度问题。不同的消元顺序可能也会带来差异,因此推荐使用绝对值较大的主元进行消元。
b. 可以使用辗转相除法代替直接除,这样可以确保系数永远是整数,从而规避浮点数运算的精度问题,但是这样也会导致数值较大,如何取舍需要依具体情况而定。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值