引入
在讲线性方程组之前,我们先来讲一个人:列昂惕夫 。当年他可是获得了诺贝尔奖了。
我们先来看看大佬长啥样的,喏,瞅下边:
\qquad\qquad\qquad\qquad\quad
1949年的时候他好像待哈佛来着,用的是MarkⅡ计算机。这台计算机是在1946年的时候研制成功的,虽然我不知道为什么百科只收录了Mark 1号,但它确实存在。…咳咳,扯远了,列昂惕夫当时是把含500多个未知量的500多个方程的方程组提炼成只有42个未知量的42个方程组,然后丢到MarkⅡ上让它算,经过两天两夜零8小时,MarkⅡ终于把结果给吐出来了。准确的来说,是终于求出了一个解,你想想,42个未知量的要求那么长时间,你要是500个未知量丢进去,那要算到猴年马月,当然,事实是当时的计算机根本处理不了含500个未知量的方程,不然要是我就算1000个我也会丢进去,自己去喝喝茶,听个小曲儿,日子活得也比整天窝稿纸上计算滋润的多不是。
后面可能还会提到他,毕竟连他获得诺贝尔经济学奖的投入产出分析方法这里都没讲呢,当然,我好像忘了说他是经济学家了。
线性方程组
当然,线性方程组你也可以叫它线性模型,这都无所谓啦
线性方程
一个包含
x
1
,
x
2
.
.
.
.
.
.
,
x
n
x_1,x_2......,x_n
x1,x2......,xn的线性方程具有如下形式:
a
1
x
1
+
a
2
x
2
+
⋯
+
a
n
x
n
=
b
\begin{array}{c}a_1x_1+a_2x_2+\cdots+a_nx_n=b \\ \end{array}
a1x1+a2x2+⋯+anxn=b
其 中 的 a 1 、 a 2 、 ⋯ a n 、 b 均 为 实 数 或 者 复 数 , 通 常 为 已 知 量 , 该 方 程 为 n 元 一 次 方 程 其中 的a_1、a_2、\cdots a_n、b 均为实数或者复数,通常为已知量,该方程为n元一次方程 其中的a1、a2、⋯an、b均为实数或者复数,通常为已知量,该方程为n元一次方程
线性方程组
一个线性方程组或者线性系统是n个线性方程的集合:
{
a
1
x
1
+
a
2
x
2
+
⋯
+
a
n
x
n
=
d
1
b
1
x
1
+
b
2
x
2
+
⋯
+
b
n
x
n
=
d
2
⋮
c
1
x
1
+
c
2
x
2
+
⋯
+
c
n
x
n
=
d
m
\left\{ \begin{array}{c} a_1x_1+a_2x_2+\cdots+a_nx_n=d_1 \\ b_1x_1+b_2x_2+\cdots+b_nx_n=d_2 \\ \vdots\\ c_1x_1+c_2x_2+\cdots+c_nx_n=d_m \end{array} \right.
⎩⎪⎪⎪⎨⎪⎪⎪⎧a1x1+a2x2+⋯+anxn=d1b1x1+b2x2+⋯+bnxn=d2⋮c1x1+c2x2+⋯+cnxn=dm
方程组的解便是一列使得该方程成立的数:
(
x
1
,
x
2
.
.
.
.
.
x
n
)
\left(x_1,x_2.....x_n\right)
(x1,x2.....xn)。
方程组的解集便是所有解构成的集合。
如果两个方程组的
解集相同
,我们称这两个方程组等价
接下来我们回到线性代数的核心内容:求解线性方程组
解线性方程组
我们先用两个变量的方程组为例:
{
x
1
−
2
x
2
=
−
1
−
x
1
+
3
x
2
=
3
\left\{ \begin{array}{c} x_1-2x_2=-1 \\ -x_1+3x_2=3 \\ \end{array} \right.
{x1−2x2=−1−x1+3x2=3
行图像
:
每个行图像显示一个方程,这是大家熟悉的了,二元一次方程的行图像就是一条二维平面的直线,
三元一次方程的行图像就是一个三维平面。当然还有更高维度(多元一次),我们一般叫超平面。
上面那两个方程肯定都是线性方程啦,在方程组的任意一个方程中 x 1 x_1 x1和 x 2 x_2 x2之间都是线性关系,所以图像必然是直线。
而这个方程组有两个方程,所以方程组的解必须同时满足两条直线,即两个方程解集便是该方程组的解集的交集
。
在二元问题上,两条直线交集有如下三种情况
:
没有交点:两条直线平行且不重合
一个交点:两条直线交叉
无穷个交点:两条直线重合
即一个线性方程组的解会有如下三种状况:
1 、 无 解 1、 无解\qquad\qquad 1、无解 2 、 有 唯 一 解 2、有唯一解\qquad\qquad 2、有唯一解 3 、 有 无 穷 多 解 3、有无穷多解 3、有无穷多解
二元一次方程组如果只有一个解,那便是是直线的交点;而三元一次方程组如果只有一个解,那便是三个平面的交点。 \qquad\qquad \qquad\qquad \qquad\quad
在线性代数中,如果方程组有解(包括唯一解和无穷解),称为相容
; 无解,则称为不相容
。
对于相容与不相容,我们可以从字面理解,方程组内的方程之间不相容,有矛盾,必然无解,反之,没有矛盾,即相容,便有解
所以说,线性方程组的两个基本问题也就出现了:
解的存在性
与唯一性
问题:
(
1
)
方
程
组
是
否
相
容
(
即
是
否
至
少
存
在
一
个
解
)
?
(
2
)
若
解
存
在
,
其
是
否
唯
一
?
\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\\ \left(1\right) 方程组是否相容(即是否至少存在一个解)? \\\left(2\right)若解存在,其是否唯一?\qquad\qquad\qquad\qquad\quad \\\qquad
(1)方程组是否相容(即是否至少存在一个解)?(2)若解存在,其是否唯一?
解方程
说了那么多,我们还是该想想最基本的问题,怎么得到方程的解。
当然了,前面写成方程组的形式,大家可能就知道该怎么解方程了,消元嘛:
{
x
1
−
2
x
2
=
−
1
(
1
)
−
x
1
+
3
x
2
=
3
(
2
)
(
1
)
+
(
2
)
消
去
(
2
)
中
的
x
1
,
得
:
{
x
1
−
2
x
2
=
−
1
(
3
)
x
2
=
2
(
4
)
2
×
(
4
)
+
(
3
)
消
去
(
3
)
中
的
x
2
,
得
:
{
x
1
=
3
(
5
)
x
2
=
2
(
6
)
\left\{ \begin{array}{c} x_1-2x_2=-1 \qquad\left(1\right) \\ -x_1+3x_2=3 \qquad\left(2\right) \\ \end{array} \right. \\\qquad\\ \left(1\right) +\left(2\right)消去\left(2\right)中的x_1,得:\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\\\qquad\\ \left\{ \begin{array}{c} x_1-2x_2=-1 \qquad\left(3\right) \\ \qquad x_2=2 \qquad\left(4\right) \\ \end{array} \right. \\\qquad\\ 2 \times \left(4\right) +\left(3\right)消去\left(3\right)中的x_2,得:\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\\\qquad\\ \left\{ \begin{array}{c} x_1\qquad= 3\qquad\left(5\right) \\ \qquad x_2=2 \qquad\left(6\right) \\ \end{array} \right. \\
{x1−2x2=−1(1)−x1+3x2=3(2)(1)+(2)消去(2)中的x1,得:{x1−2x2=−1(3)x2=2(4)2×(4)+(3)消去(3)中的x2,得:{x1=3(5)x2=2(6)
至此,我们便求解出了方程组的解。当然了,这个方程组只有唯一解。
我们得总结一下,这个过程中,我们只做了一件事:
\qquad\qquad\qquad\qquad\qquad\qquad
(
1
)
替
换
:
用
另
一
行
的
n
倍
加
到
某
行
上
,
将
原
来
那
一
行
替
换
掉
\left(1\right) 替换:用另一行的n倍加到某行上,将原来那一行替换掉
(1)替换:用另一行的n倍加到某行上,将原来那一行替换掉
我们从(2)式开始替换,直到将其变成最简形式,这个过程我们可以称为
正向阶段
,然后再用最简的式子回代,直到(1)式最简,然后我们便解出了方程,这个回代过程我们则称为反向阶段
。在后面我们还会提到,大家留个印象。
有点啰嗦了,上面这些都是大家初高中熟悉的了,接下来,我们引入矩阵表示:
矩阵记号
{
x
1
−
2
x
2
+
x
3
=
0
2
x
2
−
8
x
3
=
8
−
4
x
1
+
5
x
2
+
9
x
3
=
−
9
\left\{ \begin{array}{c} x_1-2x_2+x_3=0 \\ \qquad2x_2-8x_3=8\\ -4x_1+5x_2+9x_3=-9 \\ \end{array} \right.
⎩⎨⎧x1−2x2+x3=02x2−8x3=8−4x1+5x2+9x3=−9
我们将方程组的主要学习记录在矩阵中,如系数:
该方程组的系数矩阵:
[
1
−
2
1
0
2
−
8
−
4
5
9
]
\left[ \begin{array}{c} 1&-2&1\\ 0&2&-8\\ -4&5&9 \end{array} \right]
⎣⎡10−4−2251−89⎦⎤
如果将等式右边的那排数字也放进去,就叫增广矩阵:
[
1
−
2
1
0
0
2
−
8
8
−
4
5
9
−
9
]
\left[ \begin{array}{c} 1&-2&1&0\\ 0&2&-8&8\\ -4&5&9&-9 \end{array} \right]
⎣⎡10−4−2251−8908−9⎦⎤
该增广矩阵为3行4列,即为3x4矩阵
事实上,我们在解方程上的步骤完全可以在增广矩阵上做,最后将各系数化成如下形式,:
[
1
0
0
∗
0
1
0
∗
0
0
1
∗
]
\left[ \begin{array}{c} 1&0&0&*\\ 0&1&0&*\\ 0&0&1&* \end{array} \right]
⎣⎡100010001∗∗∗⎦⎤
这样我们不就求出方程组的解了么,的确是的,在这个过程中我们可以做如下变换:
一般我们将这些变换称为初等行变换
,这些变换并不会改变方程的解,大家仔细想想是不是那么回事。
所以我们做方程组的求解,必然离不开它们。
行化简
我们要求各种解方程组,还要解决解的那两个基本问题,必须得有一套系统的方法,那就是行化简了。
所以我们将用初等行变换对增广矩阵进行化简然后求出方程的解。
在讲方法前,先讲两个小概念:
非零行
:矩阵中至少有一个非零元素的行
非零列
:矩阵中至少有一个非零元素的列
首项元素
:非零行中最左边的第一个非零元素。
行化简中,有两个阶段:正向阶段
和反向阶段
。
前面我们也提到过,不过那时用二元方程组求解为例,现在我们用高维为例:
正向阶段
:
将原方程组的增广矩阵通过行化简的方法化简成如下的阶梯矩阵
:
[
∙
∗
⋯
∗
∗
0
∙
⋯
∗
∗
⋮
⋮
⋱
⋮
⋮
0
0
⋯
∙
∗
]
\left[ \begin{array}{c} \bullet&*&\cdots&*&*\\ 0& \bullet& \cdots&*&*\\ \vdots&\vdots&\ddots&\vdots&\vdots\\ 0&0& \cdots&\bullet&* \end{array} \right]
⎣⎢⎢⎢⎡∙0⋮0∗∙⋮0⋯⋯⋱⋯∗∗⋮∙∗∗⋮∗⎦⎥⎥⎥⎤
这个过程中将原矩阵化成了
行阶梯形式
,这种形式满足下面条件:
\qquad\qquad 1、所有的非零行均在任意全为零的行之上。
\qquad\qquad 2、每行首项元素所在的列都在上一行首项元素所在列的右边
\qquad\qquad 3、同一列中位于首项元素下方的所有元素均为零。
如下情况等都是:
[ ∙ ∗ ∗ ∗ ∗ 0 ∙ ∗ ∗ ∗ 0 0 0 ∙ ∗ 0 0 0 0 0 ] \left[ \begin{array}{c} \bullet&*&*&*&*\\ 0& \bullet&*&*&*\\ 0&0 &0&\bullet&*\\ 0&0& 0&0&0 \end{array} \right] ⎣⎢⎢⎡∙000∗∙00∗∗00∗∗∙0∗∗∗0⎦⎥⎥⎤
[ ∙ ∗ ∗ ∗ ∗ 0 0 ∙ ∗ ∗ 0 0 0 ∙ ∗ ] \left[ \begin{array}{c} \bullet&*&*&*&*\\ 0&0 &\bullet &*&*\\ 0&0 &0&\bullet &*\\ \end{array} \right] ⎣⎡∙00∗00∗∙0∗∗∙∗∗∗⎦⎤
反向阶段
:
将正向阶段的阶梯矩阵通过行化简的方法化简成如下的行简化阶梯矩阵
:
[
1
0
⋯
0
∗
0
1
⋯
0
∗
⋮
⋮
⋱
⋮
⋮
0
0
⋯
1
∗
]
\left[ \begin{array}{c} 1&0&\cdots&0&*\\ 0& 1& \cdots&0&*\\ \vdots&\vdots&\ddots&\vdots&\vdots\\ 0&0& \cdots&1&* \end{array} \right]
⎣⎢⎢⎢⎡10⋮001⋮0⋯⋯⋱⋯00⋮1∗∗⋮∗⎦⎥⎥⎥⎤
如果是行简化行阶梯形式,那还需满足如下条件:
\qquad\qquad 4、非零行中的首项元素均为1
\qquad\qquad 5、每个首项元素1在其所在的列上是唯一的非零元素
如下情况等都是:
[ 1 0 0 0 ∗ 0 1 0 0 ∗ 0 0 0 1 ∗ 0 0 0 0 0 ] \left[ \begin{array}{c} 1&0&0&0&*\\ 0& 1&0&0&*\\ 0&0 &0&1&*\\ 0&0& 0&0&0 \end{array} \right] ⎣⎢⎢⎡1000010000000010∗∗∗0⎦⎥⎥⎤
[ 1 0 0 0 ∗ 0 0 1 0 ∗ 0 0 0 1 ∗ ] \left[ \begin{array}{c} 1&0&0&0&*\\ 0&0 &1 &0&*\\ 0&0 &0&1 &*\\ \end{array} \right] ⎣⎡100000010001∗∗∗⎦⎤
矩阵的行等价
:
\qquad\qquad
两个具有相同解的增广矩阵是行等价的。
定理1
:
\qquad\qquad 每个矩阵都有唯一一个行等价的行简化阶梯矩阵。
\qquad\qquad
所以如果有一个矩阵U的行简化阶梯式与矩阵A等价,那么U的行简化阶梯式就是A的行简化阶梯式。
ps:
\qquad 大多数能够处理矩阵矩阵的软件或计算器将阶梯式记为REF,行简化阶梯式记为RREF。
\qquad MATLAB软件在解方程的时候不是直接转化为增广矩阵进行运算,它是在正向阶段先进系数矩阵的行化简,算出来如果是相容的再将右边做相同运算并加入系数矩阵中,在反向阶段才用增广矩阵做行化简,想必是为了提高效率吧。
\qquad MATLAB用的是按列存储的,采用FORTRAN语言编写的,如果说你用C语言这类按行存储的语言处理的时候要注意算法
主元和主元列
前面我们提到了首项元素,接下来我们说说主元:
主元位置:
行简化阶梯式中首项元素是1的元素所在的位置。
主元:
在主元位置的元素
主元列:
就是该主元位置所在的列
注意:主元并不一定要是1,只要非零即可,当我们将矩阵化为阶梯式的时候:
[ ∙ ∗ ∗ ∗ ∗ 0 0 ∙ ∗ ∗ 0 0 0 ∙ ∗ ] \left[ \begin{array}{c} \bullet&*&*&*&*\\ 0&0 &\bullet &*&*\\ 0&0 &0&\bullet &*\\ \end{array} \right] ⎣⎡∙00∗00∗∙0∗∗∙∗∗∗⎦⎤
这其中的每个 ∙ \bullet ∙ 都是主元。
主元是进行行化简的时候用的,举个例子:
拿到一个增广矩阵:
\qquad\qquad \qquad\qquad \qquad\qquad
对其进行行化简,确定第一行的主元位置,由于这个位置上是0,所以我们从下面找一行第一个元素为非零的行进行交换:
我们假设用第四行进行交换,得到如下结果:
\qquad\qquad \qquad\qquad \qquad\qquad
这样我们就确定了一个主元和主元列,然后继续找下一行的主元:
\qquad\qquad \qquad\qquad \qquad\qquad
直到找到所有行的主元,正向阶段结束: \qquad\qquad
\qquad\qquad \qquad\qquad
所以我们找到了该增广矩阵A的主元位置和主元列:
\qquad\qquad \qquad\qquad \qquad\qquad
如果是计算机进行行化简的话,会找到该列中绝对值最大的数来作为主元,以此来减小计算过程中的舍入误差,这叫部分主元法
一般正向阶段比反向阶段长很多,求解算法一般按浮点数来衡量,一次浮点运算指两个浮点数进行算术运算(加减乘除)。对于一个 n × ( n + 1 ) n\times(n+1) n×(n+1)矩阵,简化为阶梯矩阵实际上要 2 n 3 3 + n 2 2 − 7 n 6 \frac{2n^3}{3}+\frac{n^2}{2}-\frac{7n}{6} 32n3+2n2−67n次浮点运算,当 n > 30 n>30 n>30大约就是 2 n 3 2n^3 2n3次运算,进一步化简为简化行阶梯式还需要 n 2 n^2 n2次运算
线性方程组的解
我们前面说过线性方程的解有三种情况:
1
、
无
解
2
、
有
唯
一
解
3
、
有
无
穷
多
解
1、 无解\qquad\qquad2、有唯一解\qquad\qquad3、有无穷多解
1、无解2、有唯一解3、有无穷多解
前面我们一直在将的都是唯一解的情况,下面我们将会探讨剩余的两种情况:
我们举个例子:
我们拿到一个方程组:
{
x
1
−
5
x
3
=
1
x
2
+
x
3
=
4
2
x
2
+
2
x
3
=
8
\left\{ \begin{array}{c} x_1\qquad-5x_3=1 \\ \qquad x_2+x_3=4\\ \qquad 2x_2+2x_3=8\\ \end{array} \right.
⎩⎨⎧x1−5x3=1x2+x3=42x2+2x3=8
化简后我们得到如下:
{
x
1
−
5
x
3
=
1
x
2
+
x
3
=
4
0
x
3
=
0
\left\{ \begin{array}{c} x_1\qquad-5x_3=1 \\ \qquad x_2+x_3=4\\ \qquad\qquad 0x_3=0\\ \end{array} \right.
⎩⎨⎧x1−5x3=1x2+x3=40x3=0
我们写成增广矩阵会变成:
[
1
0
−
5
1
0
1
1
4
0
0
0
0
]
\left[ \begin{array}{c} 1&0&-5&1\\ 0&1 &1 &4\\ 0&0 &0 &0\\ \end{array} \right]
⎣⎡100010−510140⎦⎤
我们发现,这个矩阵只有两个主元,这里我们将主元列的变量
x
1
,
x
2
x_1,x_2
x1,x2称为基本变量
,另一个变量
x
3
x_3
x3称为自由变量
。
然后我们用自由变量将基本变量表示出来,这种表示又称为解集的参数表示
,像这样来给出方程通解
的显示表示:
{
x
1
=
1
+
5
x
3
x
2
=
4
−
x
3
x
3
是
自
由
变
量
\left\{ \begin{array}{c} x_1=1 +5x_3\\ x_2=4-x_3\\ \quad x_3是自由变量\\ \end{array} \right.
⎩⎨⎧x1=1+5x3x2=4−x3x3是自由变量
这种情况很显然是该方程组具有无穷多解了,也就是前面说的第三种情况了。
那么我们想想,如果用行图像来表示这种情况是神马情况呢?
.
我们一看方程组有三个变量,很显然是一个三元一次方程组了,我们知道每个三元一次方程都代表着一个平面
这个方程组中有效的平面实际上只有两个,所以两个方程一联合,就是要找到两个平面的交集,两个平面的交集很显然有三种情况,这里只提两种:
两个平面平行且不重合
:没有公共交集,方程组无解(不相容)
两个平面相交
:两个平面相交,交集是一条直线,方程组有无穷多解(相容)
.
很显然,我们用的例子肯定是后面那种情况了:
\qquad\qquad \qquad\qquad \qquad\qquad \qquad\qquad \qquad\qquad
\qquad\qquad
\qquad\qquad
当然如果是这样的方程组:
{
x
1
−
5
x
3
=
1
x
2
+
x
3
=
4
x
2
+
x
3
=
5
\left\{ \begin{array}{c} x_1\qquad-5x_3=1 \\ \qquad x_2+x_3=4\\ \qquad x_2+x_3=5 \end{array} \right.
⎩⎨⎧x1−5x3=1x2+x3=4x2+x3=5
我们会发现,第二个方程和第三个方程是矛盾的,这样的方程组是不相容的。
在行空间中,这两个平面是平行的,没有任何交集的,所以解必然是空集 。所以这种情况是无法参数表示的。
我们如果写成增广矩阵,如下:
[
1
0
−
5
1
0
1
1
4
0
1
1
5
]
\left[ \begin{array}{c} 1&0&-5&1\\ 0&1 &1 &4\\ 0&1 &1 &5\\ \end{array} \right]
⎣⎡100011−511145⎦⎤
我们行化简一下,就变成了:
[
1
0
−
5
1
0
1
1
4
0
0
0
1
]
\left[ \begin{array}{c} 1&0&-5&1\\ 0&1 &1 &4\\ 0&0 &0 &1\\ \end{array} \right]
⎣⎡100010−510141⎦⎤
重新写成方程组就是:
{
x
1
−
5
x
3
=
1
x
2
+
x
3
=
4
0
x
2
+
0
x
3
=
1
\left\{ \begin{array}{c} x_1\qquad-5x_3=1 \\ \qquad x_2+x_3=4\\ \qquad 0x_2+0x_3=1 \end{array} \right.
⎩⎨⎧x1−5x3=1x2+x3=40x2+0x3=1
很显然我们得出了一个结论,如果增广矩阵中出现了一行比较特殊的形式:
[
0
0
0
∗
]
,
其
中
∗
非
零
\left[ \begin{array}{c} 0&0 &0 &*\\ \end{array} \right] ,其中*非零
[000∗],其中∗非零
那么必然,这个方程组是无解的,方程组必然存在矛盾,肯定有平面是平行的,所以才不相容。
\qquad\qquad
那如果是这样的方程组呢:
{
x
1
−
5
x
3
=
1
x
2
+
x
3
=
4
x
3
=
1
\left\{ \begin{array}{c} x_1\qquad-5x_3=1 \\ \qquad x_2+x_3=4\\ \qquad\qquad x_3=1 \end{array} \right.
⎩⎨⎧x1−5x3=1x2+x3=4x3=1
我们其实把
x
3
x_3
x3回代就好了,可以很容易得到解。
到此我们用一个来总结一下解的存在性和唯一性问题:
存在性和唯一性
定理2
:
\qquad 当且仅当增广矩阵的阶梯形式没有如下形式的行时,方程组相容: [ 0 0 0 b ] , 其 中 b 不 为 零 \left[ \begin{array}{c} 0&0 &0 &b\\ \end{array} \right] ,其中b不为零 [000b],其中b不为零
\qquad 如果方程组相容,当没有自由变量时,方程只有唯一解;至少存在一个自由变量时,有无穷多解
小结
我们总结一下用行变换来求解线性方程组步骤:
对了,有一个问题忘了讲了,行等价的符号是~
,千万别写成 =:
- 另外,当我们面对维数比较少的方程组时还能够通过行图像想象出具体情况,但是如果是高维呢,几百维呢?
所以接下去我们将会用一种全新的视角去看待矩阵,我们将介绍列图像
,这才是线性代数的主角,以后我们主要都以列图像讲解,行图像到此就终结啦。
结语
线性代数原创连载首篇(含目录)请看:https://blog.csdn.net/qq_43133135/article/details/82960950
本次介绍了高斯消元法来求解线性方程组以及解的存在性和唯一性问题
感谢您的耐心阅读,个人水平有限,若有错误望指正,感激不尽
原创作品,如转载,请注明出处
版权声明:https://blog.csdn.net/qq_43133135/article/details/82962920