(吐槽很多线代教科书上来先讲行列式,个人感觉应该先讲矩阵较为合理)
在谈矩阵之前,先来谈一个从小学就开始研究的东西——线性方程组。
什么是线性方程?它是形如
a 1 x 1 + a 2 x 2 + … … + a n x n = b a_1x_1+a_2x_2+……+a_nx_n=b a1x1+a2x2+……+anxn=b
的方程,其中 a i a_i ai与 b b b可以为实数或复数, n n n为正整数,代表未知数个数。
而线性方程组,就是一个或几个包含相同变量 x 1 , x 2 , … … , x n x_1,x_2,……,x_n x1,x2,……,xn的线性方程组成的。
而我们通常要做的,就是去解这样的一个线性方程组,得到一组解:一组数 ( s 1 , s 2 , … … , s n ) (s_1,s_2,……,s_n) (s1,s2,……,sn),使得每一个线性方程都相等。
显然一个方程组也许不止有一个解,那么我们称所有这些可能解为解集。两个线性方程组等价的充要条件为二者有相同的解集。
如果一个线性方程组有解,或者有无穷多解,则说明这个线性方程组是相容的,反之则无解,为不相容的。
(以上都是小学里学到的线性方程组知识的高大上版本)
一个线性方程组的主要信息可以用矩阵紧凑化表示,把每个变量的系数写在对齐的一列中。
下面用数学语言表示:
对于一个线性方程组:
{ a 1 , 1 x 1 + a 1 , 2 x 2 + ⋯ + a 1 , n x n = b 1 a 2 , 1 x 1 + a 2 , 2 x 2 + ⋯ + a 2 , n x n = b 2 ⋮ a m , 1 x 1 + a m , 2 x 2 + ⋯ + a m , n x n = b n \begin{cases} a_{1,1}x_1+a_{1,2}x_2+\cdots +a_{1,n}x_n=b_1 \\ a_{2,1}x_1+a_{2,2}x_2+\cdots +a_{2,n}x_n=b_2\\ \qquad \vdots\\ a_{m,1}x_1+a_{m,2}x_2+\cdots +a_{m,n}x_n=b_n \end{cases} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧a1,1x1+a1,2x2+⋯+a1,nxn=b1a2,1x1+a2,2x2+⋯+a2,nxn=b2⋮am,1x1+am,2x2+⋯+am,nxn=bn
就可以表示为下面的矩阵:
[ a 1 , 1 a 1 , 2 ⋯ a 1 , n b 1 a 2 , 1 a 2 , 2 ⋯ a 2 , n b 2 ⋮ ⋮ ⋱ ⋮ ⋮ a m , 1 a m , 2 ⋯ a m , n b m ] \left[ \begin{array}{cccc|c} a_{1,1}&a_{1,2}&\cdots &a_{1,n}&b_1\\ a_{2,1}&a_{2,2}&\cdots &a_{2,n}&b_2\\ \vdots&\vdots&\ddots&\vdots&\vdots\\ a_{m,1}&a_{m,2}&\cdots &a_{m,n}&b_m\\ \end{array} \right] ⎣⎢⎢⎢⎡a1,1a2,1⋮am,1a1,2a2,2⋮am,2⋯⋯⋱⋯a1,na2,n⋮am,nb1b2⋮bm⎦⎥⎥⎥⎤
例如,对于下面这个线性方程组:
{ x 1 + 3 x 2 = 5 2 x 2 + x 3 = 4 x 1 + x 2 + 2 x 3 = 2 \begin{cases} x_1+3x_2 \qquad =5 \\ \qquad 2x_2+x_3=4 \\ x_1+x_2+2x_3=2 \end{cases} ⎩⎪⎨⎪⎧x1+3x2=52x2+x3=4x1+x2+2x3=2
就可以被简记为下面的矩阵:
[ 1 3 0 5 0 2 1 4 1 1 2 2 ] \left[ \begin{array}{ccc|c} 1&3&0&5\\ 0&2&1&4\\ 1&1&2&2 \end{array} \right] ⎣⎡101321012542⎦⎤
矩阵里每个对应的系数整理出来就是这个矩阵。等号右边的数写入了的矩阵,就是增广矩阵,即上面的整个矩阵;而没有右边系数的矩阵称为系数矩阵,即上面分割线左侧的3*3矩阵。
下一篇文章会讲述如何利用矩阵求解一个线性方程组——高斯-若尔当消元。
而对于线性方程组的解,我们也可以考虑这种表示方法:因为最终的解集都会形如 x i = a i x_i=a_i xi=ai。显然这个也是一个线性方程组,但是如果写成一个 n ( n + 1 ) n(n+1) n(n+1)的矩阵太费地方了,因而我们把一个线性方程组的 n n n个元的解像这么写在一条中,称为列向量——仅含一列的矩阵。
X = [ x 1 x 2 ⋮ x n ] X=\begin{bmatrix} x_1\\ x_2\\ \vdots \\ x_n\\ \end{bmatrix} X=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤
对于向量,我们了解它的很多性质,例如线性性,让它可以像正常的数一样进行加减和数乘运算。于是引出了线性组合的概念:
对于 n n n个同型向量 v i ⃗ \vec{v_i} vi与标量 c i c_i ci,向量 x ⃗ = ∑ i = 1 n c i v i ⃗ \vec{x}=\displaystyle \sum ^{n} _ {i=1} c_i\vec{v_i} x=i=1∑ncivi称为向量 v i ⃗ \vec{v_i} vi以 c i c_i ci为权的线性组合,类似于加权平均。
线性代数中一个基本的思想就是把向量的线性组合堪称矩阵与向量的积。有了这个概念,我们就能引出线性方程组的矩阵表示了。
定义:若 A A A为 m × n m \times n m×n型矩阵,第 i i i列为向量 a i ⃗ \vec{a_i} ai, x ⃗ \vec{x} x为 n n n维向量,则 A A A与 x ⃗ \vec x x的积为 A A A中各列以 x ⃗ \vec x x中对应元素为权的线性组合。
即:
A x = [ a 1 ⃗ , a 2 ⃗ , ⋯ a n ⃗ ] [ x 1 x 2 ⋮ x n ] = x 1 a 1 ⃗ + x 2 a 2 ⃗ + ⋯ x n a n ⃗ Ax=\begin{bmatrix}\vec{a_1},\vec{a_2},\cdots \vec{a_n}\end{bmatrix}\begin{bmatrix} x_1\\ x_2\\ \vdots \\ x_n\\ \end{bmatrix}=x_1\vec{a_1}+x_2\vec{a_2}+\cdots x_n\vec{a_n} Ax=[a1,a2,⋯an]⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤=x1a1+x2a2+⋯xnan
其中 x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x1,x2,⋯,xn均为标量。显然,右边也是一个 n n n维向量。这时,如果我们把 a i ⃗ \vec{a_i} ai拆开来,用矩阵中的元素表示,就会得到下面的形式:
x 1 [ a 1 , 1 a 1 , 2 ⋮ a 1 , n ] + x 2 [ a 2 , 1 a 2 , 2 ⋮ a 2 , n ] + ⋯ x n [ a n , 1 a n , 2 ⋮ a n , n ] = [ b 1 b 2 ⋮ b n ] x_1\begin{bmatrix} a_{1,1}\\ a_{1,2}\\ \vdots \\ a_{1,n}\\ \end{bmatrix}+x_2\begin{bmatrix} a_{2,1}\\ a_{2,2}\\ \vdots \\ a_{2,n}\\ \end{bmatrix}+\cdots x_n\begin{bmatrix} a_{n,1}\\ a_{n,2}\\ \vdots \\ a_{n,n}\\ \end{bmatrix}=\begin{bmatrix} b_1\\ b_2\\ \vdots \\ b_n\\ \end{bmatrix} x1⎣⎢⎢⎢⎡a1,1a1,2⋮a1,n⎦⎥⎥⎥⎤+x2⎣⎢⎢⎢⎡a2,1a2,2⋮a2,n⎦⎥⎥⎥⎤+⋯xn⎣⎢⎢⎢⎡an,1an,2⋮an,n⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡b1b2⋮bn⎦⎥⎥⎥⎤
这就是向量方程。
用上面的线性方程组举例,就是:
x
1
[
1
0
1
]
+
x
2
[
3
2
1
]
+
x
3
[
0
1
2
]
=
[
5
4
2
]
x_1\begin{bmatrix} 1\\ 0\\ 1\\ \end{bmatrix}+x_2\begin{bmatrix} 3\\ 2\\ 1\\ \end{bmatrix}+x_3\begin{bmatrix} 0\\ 1\\ 2\\ \end{bmatrix}=\begin{bmatrix} 5\\ 4\\ 2\\ \end{bmatrix}
x1⎣⎡101⎦⎤+x2⎣⎡321⎦⎤+x3⎣⎡012⎦⎤=⎣⎡542⎦⎤
如果将
x
i
x_i
xi均视为一个待解的元,将每一列向量
a
i
⃗
\vec{a_i}
ai视为每一行对应元的系数,将乘积的结果向量
B
B
B中的每一行元素视为每一个方程右边的常数
b
i
b_i
bi,那么一个线性方程组就可以写成下面的形式:
A X = B AX=B AX=B
其中, A A A为系数矩阵, X X X为 n n n维向量,代表 n n n个元,而 B B B代表等号右侧的常数。
如果用上面的线性方程组例子举例,那么:
A
=
[
1
3
0
0
2
1
1
1
2
]
,
B
=
[
5
4
2
]
A=\begin{bmatrix} 1&3&0\\ 0&2&1\\ 1&1&2 \end{bmatrix}, B=\begin{bmatrix} 5\\ 4\\ 2 \end{bmatrix}
A=⎣⎡101321012⎦⎤,B=⎣⎡542⎦⎤
而
A
X
=
B
⟺
[
1
3
0
0
2
1
1
1
2
]
[
x
1
x
2
⋮
x
n
]
=
[
5
4
2
]
AX=B\Longleftrightarrow\begin{bmatrix} 1&3&0\\ 0&2&1\\ 1&1&2 \end{bmatrix}\begin{bmatrix} x_1\\ x_2\\ \vdots \\ x_n\\ \end{bmatrix}=\begin{bmatrix} 5\\ 4\\ 2 \end{bmatrix}
AX=B⟺⎣⎡101321012⎦⎤⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤=⎣⎡542⎦⎤
而 X X X就是我们要求解的未知数。
这样我们就建立起了线性方程组和矩阵之间的联系,因而矩阵存在某些性质。
性质1:交换矩阵的任意两行,矩阵不变。显然,由于线性方程组中方程顺序无关,因而矩阵中行性质等价。
性质2:一行中每个数乘以一个非零数,矩阵不变。对一行同乘一个非零数等价于对线性方程组中一个方程同乘一个非零数,显然本质等价。
性质3:一行加上另一行的常数倍,矩阵不变。我们在进行消元的时候就是利用了这一点,进行加减消元。矩阵同样有这个性质。
以上三条性质,就是矩阵的初等行变换:
1.交换矩阵的任意两行。
2.用一个非零整数 k k k乘矩阵的任意一行。
3.将矩阵中某一行乘以 k k k倍加到另外一行。
初等行变换具有可逆性。
这三种操作会贯穿线性代数学习的始终。