算法笔记:高斯消元

(捂脸)花了一晚上看了个大概 (感觉只有自己这么鶸了)

描述

高斯消元是一种求解线性方程组的方法

定义

线性方程组:线性方程组是各个方程关于未知量均为一次的方程组

系数矩阵:用各未知数的系数所组成的矩阵(字面意思)

增广矩阵:在系数矩阵的基础上再加上方程组的常数(结果)

初等行变换:解决增广矩阵的方法

阶梯形矩阵:类似倒立的阶梯(但是我们利用初等行变换也可以变成向上的阶梯)这个会在下面的方程组中说明

上三角矩阵:是由阶梯形矩阵中的系数部分组成的 是个三角形

简化阶梯形矩阵:将阶梯形矩阵最简化

对角矩阵:(字面意思)这个会在下方证明中说明(看图辨法)

而我们要学习的高斯消元算法,就是通过初等行变换增广矩阵变化为简化阶梯形矩阵线性方程组求解的算法

讲解

当我们有一个方程组是
\(\left\{\begin{matrix} x_{1}+2x_{2}-x_{3}=-6\\ 2x_{1}+x_{2}-3x_{3}=-9\\ -x_{1}-x_{2}+2x_{3}=7 \end{matrix}\right.\)
我们可以将其转化为我们的增广矩阵 转化后如下
\(\begin{bmatrix} 1 & 2 & -1 & | & -6 \\ 2 & 1 & -3 & | & -9\\ -1 & -1 & 2 &| & 7 \end{bmatrix}\)
然后我们就需要使用初等行变换来进行求解
初等行变换的操作有三个

  • 用一个非0的数乘某一行
  • 把其中一行的若干倍加到另一行上
  • 交换两行的位置
    于是 我们就可以得到下方的求解

原式子
\(\begin{bmatrix} 1 & 2 & -1 & | & -6 \\ 2 & 1 & -3 & | & -9\\ -1 & -1 & 2 &| & 7 \end{bmatrix}\)

二行 = 二行 + 一行 * -2
\(\begin{bmatrix} 1 & 2 & -1 & -6 \\ 0 & -3 & -1 & 3\\ -1 & -1 & 2 & 7 \end{bmatrix}\)

三行 = 三行 + 一行 * 1
\(\begin{bmatrix} 1 & 2 & -1 & -6 \\ 0 & -3 & -1 & 3\\ 0 & 1 & 1 & 1 \end{bmatrix}\)

二、三行换行
\(\begin{bmatrix} 1 & 2 & -1 & -6 \\ 0 & 1 & 1 & 1\\ 0 & -3 & -1 & 3 \end{bmatrix}\)

三行 = 三行 + 二行 * 3
\(\begin{bmatrix} 1 & 2 & -1 & -6 \\ 0 & 1 & 1 & 1\\ 0 & 0 & 2 & 6 \end{bmatrix}\)

三行 = 三行 * \(\frac{1}{2}\)
\(\begin{bmatrix} 1 & 2 & -1 & -6 \\ 0 & 1 & 1 & 1\\ 0 & 0 & 1 & 3 \end{bmatrix}\)

于是 我们就完成了我们的阶梯形矩阵的化简

然后我们还原这个式子
\(\begin{bmatrix} x_{1}+2x_{2}-x_{3}=-6 \\ x_{2}+x_{3}=1\\ x_{3} = 3 \end{bmatrix}\)
是不是就变的很简单就可以解出来了?(口算

但是 其实这个式子还仅仅是阶梯形矩阵我们还有一个对角矩阵,所以我们继续化简

二行 = 二行 + 三行 * -1
\(\begin{bmatrix} 1 & 2 & -1 & -6 \\ 0 & 1 & 0 & -2\\ 0 & 0 & 1 & 3 \end{bmatrix}\)

一行 = 一行 + 三行 * 1
\(\begin{bmatrix} 1 & 2 & 0 & -3 \\ 0 & 1 & 0 & -2\\ 0 & 0 & 1 & 3 \end{bmatrix}\)

一行 = 一行 + 二行 * -2
\(\begin{bmatrix} 1 & 0 & 0 & 1 \\ 0 & 1 & 0 & -2\\ 0 & 0 & 1 & 3 \end{bmatrix}\)

于是 我们最终的式子就是
\(\begin{bmatrix} 1 & 0 & 0 & | & 1 \\ 0 & 1 & 0 & | & -2\\ 0 & 0 & 1 &| & 3 \end{bmatrix}\)
因为系数的排列就是一条对角线 所以我们称作对角矩阵
于是我们就完成了这次高斯消元的计算


但是!
上面我们所举到的例子是一种比较理想的情况
事实上,我们求解高斯消元的时候会和拼魔方一样,遇到各种各样的情况 我们仍然需要分类讨论
比如,在高斯消元的过程中,我们可能会计算出 0 = d(非0常数)这样的方程 这样就代表某些方程间有矛盾,原方程无解
再如 我们可能找不到一个x_{i}的系数的值是非0的,但x_{1}~x_{i-1}的系数都是0的方程
见此方程
\(\begin{bmatrix} x_{1}+2x_{2}-x_{3}=3 \\ 2x_{1}+4x_{2}-8x_{3}=0\\ -x_{1}-2x_{2}+6x_{3}=2 \end{bmatrix}\)

化简
\(\begin{bmatrix} 1 & 2 & -1 & 3 \\ 2 & 4 & -8 & 0\\ -1 & -2 & 6 & 2 \end{bmatrix}\)

二行 = 二行 + 一行 * -2
\(\begin{bmatrix} 1 & 2 & -1 & 3 \\ 0 & 0 & 6 & -6\\ -1 & -2 & 6 & 2 \end{bmatrix}\)

三行 = 三行 + 一行 * 1
\(\begin{bmatrix} 1 & 2 & -1 & 3 \\ 0 & 0 & 6 & -6\\ 0 & 0 & 5 & 5 \end{bmatrix}\)

猜你喜欢

转载自www.cnblogs.com/Steinway/p/9236850.html