2. 矩阵
2.1 向量左乘矩阵
在此类比一下实数函数,对于任何一种实数函数f ( x ) f(x) f ( x ) ,定义了对任意一个实数x ∈ R x \in R x ∈ R 的一种变换,即输入一个实数获得另一个实数。所有的实数可以看做是一个一维向量,其线性空间也就是一个平直的数轴。那么f ( x ) f(x) f ( x ) 对这个空间进行了变换,其函数图像可以看做是将一个平直的数轴变形成各种形状。因此实数函数就可以看做是对一维向量空间进行的变换。类似地,N维向量应该也有对应的变换,如希望输入一个N维向量,对应输出一个N维向量。因此定义一个N × N N \times N N × N 的矩阵,向量左乘该矩阵就表示这种变换。比如对于二维向量:A ∗ v ⃗ = [ a b c d ] × [ x y ] = x [ a c ] + y [ b d ] = [ a x + b y c x + d y ]
\boldsymbol{A} * \boldsymbol{\vec{v}} =
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix} \times
\begin{bmatrix} x \\ y \end{bmatrix} =
x\begin{bmatrix} a \\ c \end{bmatrix} +
y\begin{bmatrix} b \\ d \end{bmatrix} =
\begin{bmatrix} ax+by \\ cx+dy \end{bmatrix}
A ∗ v = [ a c b d ] × [ x y ] = x [ a c ] + y [ b d ] = [ a x + b y c x + d y ]
对于在一个二维平面上的所有二维向量v ⃗ \boldsymbol{\vec{v}} v ,左乘矩阵A \boldsymbol{A} A 都对应了一种变换。因此从几何角度看,这种变换相当于把整个二维平面进行了变换(类似于实数函数对一维的数轴的变形)。而这种变形从定义中就可以看出任意向量在变换前的坐标为:v ⃗ = [ x y ] = x i ⃗ + y j ⃗
\boldsymbol{\vec{v}} =
\begin{bmatrix} x \\ y \end{bmatrix} = x\boldsymbol{\vec{i}} + y\boldsymbol{\vec{j}}
v = [ x y ] = x i + y j
变换后其坐标变为v ′ ⃗ = x i ′ ⃗ + y j ′ ⃗ = x [ a c ] + y [ b d ] = [ a x + b y c x + d y ]
\boldsymbol{\vec{v'}} =
x\boldsymbol{\vec{i'}} + y\boldsymbol{\vec{j'}} =
x\begin{bmatrix} a \\ c \end{bmatrix} +
y\begin{bmatrix} b \\ d \end{bmatrix} =
\begin{bmatrix} ax+by \\ cx+dy \end{bmatrix}
v ′ = x i ′ + y j ′ = x [ a c ] + y [ b d ] = [ a x + b y c x + d y ]
几何角度来看,基向量发生了对应变化:i ⃗ = [ 1 0 ] → i ′ ⃗ = [ a c ] ; j ⃗ = [ 0 1 ] → j ′ ⃗ = [ b d ]
\boldsymbol{\vec{i}} = \begin{bmatrix} 1 \\ 0 \end{bmatrix}
\rightarrow
\boldsymbol{\vec{i'}} = \begin{bmatrix} a \\ c \end{bmatrix} ; \quad
\boldsymbol{\vec{j}} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}
\rightarrow
\boldsymbol{\vec{j'}} = \begin{bmatrix} b \\ d \end{bmatrix}
i = [ 1 0 ] → i ′ = [ a c ] ; j = [ 0 1 ] → j ′ = [ b d ]
这种左乘一个实数矩阵的操作,也就称为对空间的线性变换(Linear Transformation),变换后第i i i 个基向量变换到矩阵中第i i i 列所表示的向量的位置。严格来说,一个变换L L L 若满足如下两点则称为线性变换:
可加性(Additivity):L ( v ⃗ + w ⃗ ) = L ( v ⃗ ) + L ( w ⃗ ) L(\boldsymbol{\vec{v}}+\boldsymbol{\vec{w}}) = L(\boldsymbol{\vec{v}}) + L(\boldsymbol{\vec{w}}) L ( v + w ) = L ( v ) + L ( w )
一次齐性/成比例性(Scaling):L ( c v ⃗ ) = c L ( v ⃗ ) L(c\boldsymbol{\vec{v}}) = cL(\boldsymbol{\vec{v}}) L ( c v ) = c L ( v )
几何角度来看,对于二维空间进行线性变换,变换前后原点位置不变,空间的网格线保持平行和等距。对二维空间的线性变换举例如下:
逆时针旋转90°:[ 0 − 1 1 0 ] ; i ⃗ = [ 1 0 ] → i ′ ⃗ = [ 0 1 ] ; j ⃗ = [ 0 1 ] → j ′ ⃗ = [ − 1 0 ]
\begin{bmatrix}
0 & -1 \\
1 & 0
\end{bmatrix} ; \;
\boldsymbol{\vec{i}} = \begin{bmatrix} 1 \\ 0 \end{bmatrix}
\rightarrow
\boldsymbol{\vec{i'}} = \begin{bmatrix} 0 \\ 1 \end{bmatrix} ; \;
\boldsymbol{\vec{j}} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}
\rightarrow
\boldsymbol{\vec{j'}} = \begin{bmatrix} -1 \\ 0 \end{bmatrix}
[ 0 1 − 1 0 ] ; i = [ 1 0 ] → i ′ = [ 0 1 ] ; j = [ 0 1 ] → j ′ = [ − 1 0 ]
逆时针旋转30°:[ cos π 6 − sin π 6 sin π 6 cos π 6 ] ; i ⃗ = [ 1 0 ] → i ′ ⃗ = [ cos π 6 sin π 6 ] ; j ⃗ = [ 0 1 ] → j ′ ⃗ = [ − sin π 6 cos π 6 ]
\begin{bmatrix}
\cos{\frac{\pi}{6}} & -\sin{\frac{\pi}{6}} \\
\sin{\frac{\pi}{6}} & \cos{\frac{\pi}{6}}
\end{bmatrix} ; \;
\boldsymbol{\vec{i}} = \begin{bmatrix} 1 \\ 0 \end{bmatrix}
\rightarrow
\boldsymbol{\vec{i'}} = \begin{bmatrix} \cos{\frac{\pi}{6}} \\ \sin{\frac{\pi}{6}} \end{bmatrix} ; \;
\boldsymbol{\vec{j}} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}
\rightarrow
\boldsymbol{\vec{j'}} = \begin{bmatrix} -\sin{\frac{\pi}{6}} \\ \cos{\frac{\pi}{6}} \end{bmatrix}
[ cos 6 π sin 6 π − sin 6 π cos 6 π ] ; i = [ 1 0 ] → i ′ = [ cos 6 π sin 6 π ] ; j = [ 0 1 ] → j ′ = [ − sin 6 π cos 6 π ]
剪切(Shear):[ 1 1 0 1 ] ; i ⃗ 不变 ; j ⃗ = [ 0 1 ] → j ′ ⃗ = [ 1 1 ]
\begin{bmatrix}
1 & 1 \\
0 & 1
\end{bmatrix} ; \;
\boldsymbol{\vec{i}} \text{不变}; \;
\boldsymbol{\vec{j}} = \begin{bmatrix} 0 \\ 1 \end{bmatrix}
\rightarrow
\boldsymbol{\vec{j'}} = \begin{bmatrix} 1 \\ 1 \end{bmatrix}
[ 1 0 1 1 ] ; i 不变 ; j = [ 0 1 ] → j ′ = [ 1 1 ]
没有任何操作的变换(单位矩阵):I = [ 1 0 0 1 ] ; i ⃗ , j ⃗ 均不变
\boldsymbol{I} =
\begin{bmatrix}
1 & 0 \\
0 & 1
\end{bmatrix} ; \;
\boldsymbol{\vec{i}},\boldsymbol{\vec{j}} \text{均不变}
I = [ 1 0 0 1 ] ; i , j 均不变
2.2 矩阵乘法
从几何意义很容易理解,向量左乘一个矩阵A \boldsymbol{A} A 表示对向量空间进行了一种线性变换,若再左乘一个矩阵B \boldsymbol{B} B ,则表示在之前变换的基础上继续进行另一种线性变换。因此这两个矩阵的乘积实际上也可以用一个矩阵表示,代表空间按这两个矩阵定义的线性变换后的复合变换。注意这种变换是有顺序 的,且顺序是自左向右 。如B ∗ A \boldsymbol{B}*\boldsymbol{A} B ∗ A 表示先进行A \boldsymbol{A} A 表示的变换,再进行B \boldsymbol{B} B 表示的变换,这种复合变换不一定等同于A ∗ B \boldsymbol{A}*\boldsymbol{B} A ∗ B 表示的复合变换。即矩阵乘法不符合交换律A ∗ B ≠ B ∗ A \boldsymbol{A}*\boldsymbol{B} \neq \boldsymbol{B}*\boldsymbol{A} A ∗ B = B ∗ A 。从几何意义也可以很容易解释,如对二维平面先旋转90°再进行剪切,和先进行剪切再旋转90°操作,两种结果是不一样的:
之前提到,矩阵在表示空间线性变换时,其第i i i 列即为第i i i 个基向量在变换后所在的位置。因此可以从这个几何解释推得矩阵乘法的计算方式:B ∗ A ∗ v ⃗ = [ e f g h ] ∗ [ a b c d ] ∗ v ⃗
\boldsymbol{B} * \boldsymbol{A} * \boldsymbol{\vec{v}} =
\begin{bmatrix}
e & f \\
g & h
\end{bmatrix} *
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix} * \boldsymbol{\vec{v}}
B ∗ A ∗ v = [ e g f h ] ∗ [ a c b d ] ∗ v
先左乘矩阵A = [ a b c d ] \boldsymbol{A} = \begin{bmatrix} a & b \\ c & d \end{bmatrix} A = [ a c b d ] 表示基向量进行了如下变换:i ′ ⃗ = A ∗ i ⃗ = [ a b c d ] ∗ [ 1 0 ] = [ a c ] j ′ ⃗ = A ∗ j ⃗ = [ a b c d ] ∗ [ 0 1 ] = [ b d ]
\begin{aligned}
& \boldsymbol{\vec{i'}} =
\boldsymbol{A} * \boldsymbol{\vec{i}} =
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix} * \begin{bmatrix} 1 \\ 0 \end{bmatrix} =
\begin{bmatrix} a \\ c \end{bmatrix} \\
& \boldsymbol{\vec{j'}} =
\boldsymbol{A} * \boldsymbol{\vec{j}} =
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix} * \begin{bmatrix} 0 \\ 1 \end{bmatrix} =
\begin{bmatrix} b \\ d \end{bmatrix}
\end{aligned}
i ′ = A ∗ i = [ a c b d ] ∗ [ 1 0 ] = [ a c ] j ′ = A ∗ j = [ a c b d ] ∗ [ 0 1 ] = [ b d ]
再左乘矩阵B = [ e f g h ] \boldsymbol{B} = \begin{bmatrix} e & f \\ g & h \end{bmatrix} B = [ e g f h ] 表示基向量继续 进行如下变换:i ′ ′ ⃗ = B ∗ i ′ ⃗ = [ e f g h ] ∗ [ a c ] = [ a e + c f a g + c h ] j ′ ′ ⃗ = B ∗ j ′ ⃗ = [ e f g h ] ∗ [ b d ] = [ b e + d f b g + d h ]
\begin{aligned}
& \boldsymbol{\vec{i''}} =
\boldsymbol{B} * \boldsymbol{\vec{i'}} =
\begin{bmatrix}
e & f \\
g & h
\end{bmatrix} * \begin{bmatrix} a \\ c \end{bmatrix} =
\begin{bmatrix} ae + cf \\ ag + ch \end{bmatrix} \\
& \boldsymbol{\vec{j''}} =
\boldsymbol{B} * \boldsymbol{\vec{j'}} =
\begin{bmatrix}
e & f \\
g & h
\end{bmatrix} * \begin{bmatrix} b \\ d \end{bmatrix} =
\begin{bmatrix} be + df \\ bg + dh \end{bmatrix}
\end{aligned}
i ′ ′ = B ∗ i ′ = [ e g f h ] ∗ [ a c ] = [ a e + c f a g + c h ] j ′ ′ = B ∗ j ′ = [ e g f h ] ∗ [ b d ] = [ b e + d f b g + d h ]
综上,两个矩阵乘法表示先后(从左至右)进行两个矩阵表示的线性变换的复合变换。因此复合变换的矩阵也就是变换后的基向量所组成的矩阵,计算结果即为:B ∗ A = [ e f g h ] ∗ [ a b c d ] = [ i ′ ′ ⃗ , j ′ ′ ⃗ ] = [ a e + c f b e + d f a g + c h b g + d h ]
\boldsymbol{B} * \boldsymbol{A} =
\begin{bmatrix}
e & f \\
g & h
\end{bmatrix} *
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix} =
\begin{bmatrix}
\boldsymbol{\vec{i''}} , \boldsymbol{\vec{j''}}
\end{bmatrix} =
\begin{bmatrix}
ae + cf & be + df \\
ag + ch & bg + dh
\end{bmatrix}
B ∗ A = [ e g f h ] ∗ [ a c b d ] = [ i ′ ′ , j ′ ′ ] = [ a e + c f a g + c h b e + d f b g + d h ]
可以看到2 × 2 2 \times 2 2 × 2 的矩阵乘法就已经比较复杂了,更高维度的矩阵乘法表示起来也就更复杂了,因此通过数学方式证明矩阵乘法符合结合律也不简单。不过从几何意义考虑这个问题则非常简单,既然左乘一个矩阵表示对空间的线性变换,那么先进行A \boldsymbol{A} A 和B \boldsymbol{B} B 表示的复合变换,再进行C \boldsymbol{C} C 表示的变换;与先进行A \boldsymbol{A} A 表示的变换,再进行B \boldsymbol{B} B 和C \boldsymbol{C} C 表示的复合变换的结果在几何角度上很明显是一致的。因此( C ∗ B ) ∗ A = C ∗ ( B ∗ A ) (\boldsymbol{C} * \boldsymbol{B}) * \boldsymbol{A} = \boldsymbol{C} * (\boldsymbol{B} * \boldsymbol{A}) ( C ∗ B ) ∗ A = C ∗ ( B ∗ A ) ,也就是说矩阵乘法符合结合律。
2.3 行列式
对空间进行线性变换往往涉及到对空间的“挤压”或“拉伸”,也就是对空间的缩放(Scaling)。在二维平面中体现为面积的缩放,三维空间中体现为体积的缩放。因此一个N × N N \times N N × N 的矩阵所表示的N维空间上的线性变换导致对空间进行缩放的比例就是该矩阵行列式 (Determinant)的值。如对二维空间进行逆时针旋转90°,其变换矩阵对应的行列式:∣ 0 − 1 1 0 ∣ = 1
\begin{vmatrix}
0 & -1 \\ 1 & 0
\end{vmatrix} = 1
∣ ∣ ∣ ∣ 0 1 − 1 0 ∣ ∣ ∣ ∣ = 1
这也很符合几何直觉,即旋转并不会引起面积的变化。学过线性代数都知道行列式的值可能为负,但面积和体积并不会为负。因此行列式为负值时,负号表示空间的朝向(Orientation)发生了变化,行列式的绝对值仍然表示空间的缩放比例。在二维空间中表示平面发生了偏转(Flip),三维空间中则表示坐标系的手性发生了变化。左右手坐标系的定义见下图:
当行列式为0时,则表示二维平面上的面积、三维空间中的体积变为0。自然也容易想象得出是二维平面被压缩变形成了一条直线或一个点;三维空间被压缩变形成了一个平面、一条直线或一个点,这往往也就被称为空间降维。如果一个N × N N \times N N × N 的矩阵对应的行列式为0,则表示该矩阵所代表的变换使得N维空间的维度降低。也就是说变换后的n个基向量所张成的空间维度降低了,即变换后的n个基向量之间存在线性关系,也就是该矩阵中的一列或多列是线性相关的。
根据行列式的几何意义,也可以从二维平面上推得行列式的计算方法。假设对二维平面进行矩阵A = [ a b c d ] \boldsymbol{A} = \begin{bmatrix} a & b \\ c & d \end{bmatrix} A = [ a c b d ] 所表示的变换,该变换不会导致降维。根据之前已经了解到的,基向量为互相垂直的单位向量i ⃗ = [ 1 0 ] ; j ⃗ = [ 0 1 ] \boldsymbol{\vec{i}} = \begin{bmatrix} 1 \\ 0 \end{bmatrix};\boldsymbol{\vec{j}} = \begin{bmatrix} 0 \\ 1 \end{bmatrix} i = [ 1 0 ] ; j = [ 0 1 ] ,因此变换前基向量围成的正方形面积即为1。
变换后基向量分别为i ′ ⃗ = [ a c ] ; j ′ ⃗ = [ b d ] \boldsymbol{\vec{i'}} = \begin{bmatrix} a \\ c\end{bmatrix};\boldsymbol{\vec{j'}} = \begin{bmatrix} b \\ d\end{bmatrix} i ′ = [ a c ] ; j ′ = [ b d ] ,那么变换后基向量围成的平行四边形的面积也就是变换矩阵行列式∣ A ∣ = ∣ a b c d ∣ |\boldsymbol{A}| = \begin{vmatrix} a & b \\ c & d \end{vmatrix} ∣ A ∣ = ∣ ∣ ∣ ∣ a c b d ∣ ∣ ∣ ∣ 的值。视频中截一个图我想已经表示的足够清晰了:
这时就可以感觉到如果从几何角度看线性代数中的各种定义和规则,明显要比死记硬背简单得多。同样从几何意义也很容易理解矩阵乘法的行列式规则:∣ A ∗ B ∣ = ∣ A ∣ ∗ ∣ B ∣
|\boldsymbol{A}*\boldsymbol{B}| = |\boldsymbol{A}| * |\boldsymbol{B}|
∣ A ∗ B ∣ = ∣ A ∣ ∗ ∣ B ∣
矩阵乘法A ∗ B \boldsymbol{A}*\boldsymbol{B} A ∗ B 表示的复合变换等同于对空间先进行B \boldsymbol{B} B 表示的变换,再进行A \boldsymbol{A} A 表示的变换。那么空间的缩放比例自然也就是先缩放了∣ B ∣ |\boldsymbol{B}| ∣ B ∣ 倍,再缩放了∣ A ∣ |\boldsymbol{A}| ∣ A ∣ 倍。A ∗ B \boldsymbol{A}*\boldsymbol{B} A ∗ B 表示的复合变换前后空间整体缩放的倍数也就是∣ A ∣ ∗ ∣ B ∣ |\boldsymbol{A}| * |\boldsymbol{B}| ∣ A ∣ ∗ ∣ B ∣ 倍了。
此外,行列式在二维平面上往往还可以计算两个向量v ⃗ \boldsymbol{\vec{v}} v 和w ⃗ \boldsymbol{\vec{w}} w 所围成的平行四边形的面积。由于两个互相垂直的单位基向量i ⃗ \boldsymbol{\vec{i}} i 和j ⃗ \boldsymbol{\vec{j}} j 所围成的面积一定是1,那么求解向量v ⃗ \boldsymbol{\vec{v}} v 和w ⃗ \boldsymbol{\vec{w}} w 所围成的平行四边形的面积完全可以等效于将空间进行变换,使得变换后一对基向量分别落在这两个向量上,那么这个变换所对应的对空间的缩放比例就是其变换矩阵的行列式的值。而矩阵A = [ v ⃗ , w ⃗ ] \boldsymbol{A}=[\boldsymbol{\vec{v}},\boldsymbol{\vec{w}}] A = [ v , w ] 所代表的就是上面所要求的那种变换,因此该矩阵的行列式的值就是这两个向量v ⃗ \boldsymbol{\vec{v}} v 和w ⃗ \boldsymbol{\vec{w}} w 所围成的平行四边形的面积。当然,由于矩阵行列式有正有负,负值代表了平面发生了翻转,也就是说本来基向量i ⃗ \boldsymbol{\vec{i}} i 是在基向量j ⃗ \boldsymbol{\vec{j}} j 的右边,如果最后基向量所在的位置反了,也就是v ⃗ \boldsymbol{\vec{v}} v 落在了w ⃗ \boldsymbol{\vec{w}} w 的左边,那行列式也就是负值。不过其绝对值仍然可以表示面积。
2.4 矩阵的用途(线性方程组)
之前都是将一个N × N N \times N N × N 的矩阵看做是对N维空间的一种线性变换。但矩阵的用途不止于此,例如下面的线性方程组(Linear System of Equations)也一样可以通过矩阵与向量相乘来定义:{ 2 x + 5 y + 3 z = − 3 4 x + 0 y + 8 z = 0 1 x + 3 y + 0 z = 2 ⇔ [ 2 5 3 4 0 8 1 3 0 ] ∗ [ x y z ] = [ − 3 0 2 ]
\left\{\begin{array}{c}
2x+ 5y + 3z = -3 \\
4x+ 0y + 8z = 0 \\
1x+ 3y + 0z = 2
\end{array}\right.
\Leftrightarrow
\begin{bmatrix}
2 & 5 & 3 \\ 4 & 0 & 8 \\ 1 & 3 & 0
\end{bmatrix} *
\begin{bmatrix} x \\ y \\ z \end{bmatrix} =
\begin{bmatrix} -3 \\ 0 \\ 2 \end{bmatrix}
⎩ ⎨ ⎧ 2 x + 5 y + 3 z = − 3 4 x + 0 y + 8 z = 0 1 x + 3 y + 0 z = 2 ⇔ ⎣ ⎡ 2 4 1 5 0 3 3 8 0 ⎦ ⎤ ∗ ⎣ ⎡ x y z ⎦ ⎤ = ⎣ ⎡ − 3 0 2 ⎦ ⎤
从矩阵与向量乘法的几何意义也可以将求解该方程组的问题转化为一个几何问题:在经过矩阵A = [ 2 5 3 4 0 8 1 3 0 ] \boldsymbol{A} = \begin{bmatrix} 2 & 5 & 3 \\ 4 & 0 & 8 \\ 1 & 3 & 0 \end{bmatrix} A = ⎣ ⎡ 2 4 1 5 0 3 3 8 0 ⎦ ⎤ 所表示的变换后,原来的哪个向量x ⃗ = [ x y z ] \boldsymbol{\vec{x}} = \begin{bmatrix} x \\ y \\ z \end{bmatrix} x = ⎣ ⎡ x y z ⎦ ⎤ 会落在v ⃗ = [ − 3 0 2 ] \boldsymbol{\vec{v}} = \begin{bmatrix} -3 \\ 0 \\ 2 \end{bmatrix} v = ⎣ ⎡ − 3 0 2 ⎦ ⎤ 的位置上?
2.5 矩阵的逆
接下来继续从几何角度尝试解决A ∗ x ⃗ = v ⃗ \boldsymbol{A}*\boldsymbol{\vec{x}}=\boldsymbol{\vec{v}} A ∗ x = v 这个问题。既然x ⃗ \boldsymbol{\vec{x}} x 就是向量v ⃗ \boldsymbol{\vec{v}} v 在经过矩阵A \boldsymbol{A} A 所表示的变换后所在的位置。那想知道原来的向量,把空间再反向变换回去不就行了么。没错,这也就引出了矩阵的逆 (Inverse)的概念:矩阵A \boldsymbol{A} A 表示的变换的逆向变换所对应的矩阵,称为矩阵A \boldsymbol{A} A 的逆,表示为A − 1 \boldsymbol{A^{-1}} A − 1 。从这种几何解释也很容易得出逆矩阵的数学定义:A A − 1 = A − 1 A = I
\boldsymbol{A}\boldsymbol{A^{-1}} = \boldsymbol{A^{-1}}\boldsymbol{A} =
\boldsymbol{I}
A A − 1 = A − 1 A = I
这种数学定义也很容易从几何角度理解,既然矩阵的逆就表示原矩阵所对应空间变换的逆变换。那么先进行原矩阵表示的变换,再进行逆变换,最后复合变换的结果自然是空间没变换嘛,也就是相当于左乘一个单位矩阵。反过来,如果先进行逆变换,再进行逆变换的逆变换(即原矩阵表示的变换),明显一样相当于没变换。我想这种逻辑小学生都很容易就理解了吧(#^.^#)
有了逆矩阵,我们自然也就可以求解之前的问题了:A x ⃗ = v ⃗ ⇔ A − 1 A x ⃗ = A − 1 v ⃗ ⇔ x ⃗ = A − 1 v ⃗
\boldsymbol{A}\boldsymbol{\vec{x}}=\boldsymbol{\vec{v}} \Leftrightarrow
\boldsymbol{A^{-1}}\boldsymbol{A}\boldsymbol{\vec{x}}=\boldsymbol{A^{-1}}\boldsymbol{\vec{v}} \Leftrightarrow
\boldsymbol{\vec{x}}=\boldsymbol{A^{-1}}\boldsymbol{\vec{v}}
A x = v ⇔ A − 1 A x = A − 1 v ⇔ x = A − 1 v
不过若变换矩阵的行列式为0(∣ A ∣ = 0 |\boldsymbol{A}|=0 ∣ A ∣ = 0 ),该问题就略显复杂了。之前就讨论过行列式为0的矩阵对应的变换会导致空间的降维。比如把一个二维平面压缩成一条直线,然而把一个平面压缩成同一条直线的方式并不止一种,因此其逆向变换(“解压缩”)的方式同样也不止一种。展示一张图作为例子:
矩阵[ 1 − 1 1 − 1 ] \begin{bmatrix} 1 & -1 \\ 1 & -1 \end{bmatrix} [ 1 1 − 1 − 1 ] 和矩阵[ 1 2 1 2 ] \begin{bmatrix} 1 & 2 \\ 1 & 2 \end{bmatrix} [ 1 1 2 2 ] 对应的行列式的值均为0,这两个矩阵都是将二维平面压缩到了y = x y=x y = x 这条直线上。但很明显压缩的方式不同,因为压缩后基向量的位置并不一样,并且随便挑选一个向量[ 1 1 ] \begin{bmatrix} 1 \\ 1 \end{bmatrix} [ 1 1 ] ,其在变换后也处于不同的位置:矩阵[ 1 − 1 1 − 1 ] \begin{bmatrix} 1 & -1 \\ 1 & -1 \end{bmatrix} [ 1 1 − 1 − 1 ] 将该向量压缩成了0 ⃗ \boldsymbol{\vec{0}} 0 向量;矩阵[ 1 2 1 2 ] \begin{bmatrix} 1 & 2 \\ 1 & 2 \end{bmatrix} [ 1 1 2 2 ] 则将该向量拉长到[ 3 3 ] \begin{bmatrix} 3 \\ 3 \end{bmatrix} [ 3 3 ] 。
从几何角度很容易理解行列式为0的矩阵对应了空间的降维,是没有逆矩阵的(“解压缩”的方式太多),因此A x ⃗ = v ⃗ \boldsymbol{A}\boldsymbol{\vec{x}}=\boldsymbol{\vec{v}} A x = v 就无法根据逆矩阵求解了。x ⃗ \boldsymbol{\vec{x}} x 要么有无数个解,要么无解。其实这一点也很容易从几何角度理解。比如上面的例子,两个矩阵都将二维平面压缩在了y = x y=x y = x 这条直线上。也就是说原来平面上的任何一个向量x ⃗ \boldsymbol{\vec{x}} x ,经过矩阵的变换后(A x ⃗ \boldsymbol{A}\boldsymbol{\vec{x}} A x )都会落在y = x y=x y = x 这条直线上。因此如果v ⃗ \boldsymbol{\vec{v}} v 并不在这条直线上,很明显是无解的。而对于矩阵[ 1 − 1 1 − 1 ] \begin{bmatrix} 1 & -1 \\ 1 & -1 \end{bmatrix} [ 1 1 − 1 − 1 ] ,不仅是向量[ 1 1 ] \begin{bmatrix} 1 \\ 1 \end{bmatrix} [ 1 1 ] ,原先所有落在y = x y=x y = x 这条直线上的向量,最后都会被压缩到原点,即零向量0 ⃗ \boldsymbol{\vec{0}} 0 ;对于矩阵[ 1 2 1 2 ] \begin{bmatrix} 1 & 2 \\ 1 & 2 \end{bmatrix} [ 1 1 2 2 ] ,同样不仅是向量[ 1 1 ] \begin{bmatrix} 1 \\ 1 \end{bmatrix} [ 1 1 ] ,原先所有落在x + 2 y = 3 x+2y=3 x + 2 y = 3 这条直线上的向量,也都会落在[ 3 3 ] \begin{bmatrix} 3 \\ 3 \end{bmatrix} [ 3 3 ] 这个位置。因此如果v ⃗ \boldsymbol{\vec{v}} v 为零向量0 ⃗ \boldsymbol{\vec{0}} 0 、或在y = x y=x y = x 这条直线上,那么A x ⃗ = v ⃗ \boldsymbol{A}\boldsymbol{\vec{x}}=\boldsymbol{\vec{v}} A x = v 就有无数个解。视频中的一个截图也很能说明这个问题:
2.6 克莱姆法则(Cramer’s Rule)
视频中这一节在最后一节,但我想可能是作者最后加上来的,在这里就把它提出来比较好。在这个小节中均假设矩阵A \boldsymbol{A} A 的行列式不等于0,那么矩阵就确定是存在逆矩阵A − 1 \boldsymbol{A^{-1}} A − 1 的,则A x ⃗ = v ⃗ \boldsymbol{A}\boldsymbol{\vec{x}}=\boldsymbol{\vec{v}} A x = v 就可以通过逆矩阵求解向量x ⃗ \boldsymbol{\vec{x}} x 。但逆矩阵的求解往往非常复杂,常用的一个方法叫克莱姆法则,该法则从几何角度是很容易理解的。
根据之前对行列式的理解,行列式表示对空间进行矩阵所代表的线性变换,所导致的缩放比例。在二维平面上就体现为面积的变化,而且每个区域的面积变化是一样的。那么在变换后向量v ⃗ \boldsymbol{\vec{v}} v 与变换后的一对基向量i ′ ⃗ \boldsymbol{\vec{i'}} i ′ 和j ′ ⃗ \boldsymbol{\vec{j'}} j ′ 所围成的两个平行四边形的面积,一样分别比变换前的向量x ⃗ \boldsymbol{\vec{x}} x 与两个基向量i ⃗ \boldsymbol{\vec{i}} i 和j ⃗ \boldsymbol{\vec{j}} j 所围成的两个平行四边形面积变化了∣ A ∣ |\boldsymbol{A}| ∣ A ∣ 倍。还是上一张图更好说明问题:
图中也展示出来了,变换之前向量x ⃗ \boldsymbol{\vec{x}} x 与基向量i ⃗ \boldsymbol{\vec{i}} i 围成的面积就是其y坐标的绝对值;其与j ⃗ \boldsymbol{\vec{j}} j 所围成的面积就是其x坐标的绝对值。而变换后的向量x ′ ⃗ \boldsymbol{\vec{x'}} x ′ 与基向量i ′ ⃗ \boldsymbol{\vec{i'}} i ′ 所围成的面积,就是矩阵[ i ′ ⃗ , x ′ ⃗ ] [\boldsymbol{\vec{i'}},\boldsymbol{\vec{x'}}] [ i ′ , x ′ ] 的行列式的值;对应地,变换后的向量x ′ ⃗ \boldsymbol{\vec{x'}} x ′ 与基向量j ′ ⃗ \boldsymbol{\vec{j'}} j ′ 所围成的面积,就是矩阵[ x ′ ⃗ , j ′ ⃗ ] [\boldsymbol{\vec{x'}},\boldsymbol{\vec{j'}}] [ x ′ , j ′ ] 的行列式的值。这也就从几何角度推出了克莱姆法则:A ∗ x ⃗ = x ′ ⃗ ⇔ [ a b c d ] ∗ [ x y ] = [ h k ]
\boldsymbol{A} * \boldsymbol{\vec{x}} = \boldsymbol{\vec{x'}} \Leftrightarrow
\begin{bmatrix}
a & b \\ c & d
\end{bmatrix} *
\begin{bmatrix} x \\ y \end{bmatrix} =
\begin{bmatrix} h \\ k \end{bmatrix}
A ∗ x = x ′ ⇔ [ a c b d ] ∗ [ x y ] = [ h k ] x = ∣ x ′ ⃗ , j ′ ⃗ ∣ ∣ A ∣ ; y = ∣ i ′ ⃗ , x ′ ⃗ ∣ ∣ A ∣ ⇔ x = ∣ h b k d ∣ ∣ a b c d ∣ ; y = ∣ a h c k ∣ ∣ a b c d ∣
x = \frac{\begin{vmatrix}
\boldsymbol{\vec{x'}},\boldsymbol{\vec{j'}}
\end{vmatrix}}
{\begin{vmatrix} \boldsymbol{A} \end{vmatrix}} ; \;
y = \frac{\begin{vmatrix}
\boldsymbol{\vec{i'}},\boldsymbol{\vec{x'}}
\end{vmatrix}}
{\begin{vmatrix} \boldsymbol{A} \end{vmatrix}}
\Leftrightarrow
x = \frac{\begin{vmatrix}
h & b \\ k & d
\end{vmatrix}}
{\begin{vmatrix}
a & b \\ c & d
\end{vmatrix}} ; \;
y = \frac{\begin{vmatrix}
a & h \\ c & k
\end{vmatrix}}
{\begin{vmatrix}
a & b \\ c & d
\end{vmatrix}}
x = ∣ ∣ A ∣ ∣ ∣ ∣ ∣ x ′ , j ′ ∣ ∣ ∣ ; y = ∣ ∣ A ∣ ∣ ∣ ∣ ∣ i ′ , x ′ ∣ ∣ ∣ ⇔ x = ∣ ∣ ∣ ∣ a c b d ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ h k b d ∣ ∣ ∣ ∣ ; y = ∣ ∣ ∣ ∣ a c b d ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a c h k ∣ ∣ ∣ ∣
2.7 矩阵的秩
上面说到当一个N × N N \times N N × N 的矩阵对应的行列式的值为0的时候,表示该变换导致了空间的降维。但举了一个例子只是把二维平面压缩成了一条直线。如果是一个3 × 3 3 \times 3 3 × 3 的矩阵,矩阵对应的变换将三维空间压缩成一个平面或者一条直线、甚至是一个点的时候,行列式均为0。因此仅凭借行列式为0并不能判断出矩阵将空间压缩得有多厉害,所以定义一个概念为矩阵的秩 (Rank)。从几何角度来说,矩阵的秩就表示按照矩阵对空间进行变换之后空间的维度数量。比如一个三维空间在经过矩阵A \boldsymbol{A} A 变换后被压缩成了一个平面,那么矩阵的秩R ( A ) = 2 R(\boldsymbol{A})=2 R ( A ) = 2 ;如果三维空间被压缩成了一条直线,矩阵的秩R ( A ) = 1 R(\boldsymbol{A})=1 R ( A ) = 1 。
进一步,如果一个N × N N \times N N × N 的矩阵的秩R ( A ) < n R(\boldsymbol{A}) \lt n R ( A ) < n ,则说明该矩阵一定导致了空间的降维,那么一定有∣ A ∣ = 0 |\boldsymbol{A}|=0 ∣ A ∣ = 0 ;反之,若N × N N \times N N × N 的矩阵的秩R ( A ) = n R(\boldsymbol{A}) = n R ( A ) = n ,那么一定有∣ A ∣ ≠ 0 |\boldsymbol{A}| \neq 0 ∣ A ∣ = 0 ,该矩阵也被称为满秩(Full Rank)矩阵。因为N × N N \times N N × N 的矩阵的秩最大也就是N了。
2.8 列空间、零空间
无论经过矩阵变换后的空间有多少维度,变换后所有可能的输出向量的集合也就称为这个矩阵的列空间 (Column Space)。其实也就是经过这个矩阵变换后的基向量(即这个矩阵每一列对应的向量),所能张成的空间。
之前提到如果一个N × N N \times N N × N 的矩阵的秩R ( A ) < n R(\boldsymbol{A}) \lt n R ( A ) < n ,则说明该矩阵一定导致了空间的降维,一定有∣ A ∣ = 0 |\boldsymbol{A}|=0 ∣ A ∣ = 0 。这种降维也一定会导致有很多原先的非零向量被压缩到原点,也就是被压缩成零向量0 ⃗ \boldsymbol{\vec{0}} 0 。这一组最终被压缩成零向量的向量集合,就被称为矩阵的零空间 (Null Space),或核 (Kernel)。该概念可以与特征向量关联,详见后面特征向量部分。
比如之前举的那个例子,矩阵[ 1 − 1 1 − 1 ] \begin{bmatrix} 1 & -1 \\ 1 & -1 \end{bmatrix} [ 1 1 − 1 − 1 ] 对应的变换将二维平面压缩在了y = x y=x y = x 这条直线上,并且原先所有落在y = x y=x y = x 这条直线上的向量,最后都会被压缩成0 ⃗ \boldsymbol{\vec{0}} 0 。因此所有落在y = x y=x y = x 这条直线上的向量就称为矩阵[ 1 − 1 1 − 1 ] \begin{bmatrix} 1 & -1 \\ 1 & -1 \end{bmatrix} [ 1 1 − 1 − 1 ] 的零空间或核。
很容易从几何角度理解矩阵A \boldsymbol{A} A 的零空间,是所有经A \boldsymbol{A} A 代表的线性变换之后为0 ⃗ \boldsymbol{\vec{0}} 0 的向量,也就是A x ⃗ = 0 ⃗ \boldsymbol{A}\boldsymbol{\vec{x}}=\boldsymbol{\vec{0}} A x = 0 的解的集合。也很容易从几何角度推知若矩阵是满秩的,空间没有降维,也就只有0 ⃗ \boldsymbol{\vec{0}} 0 本身还是零向量。
2.9 非方阵
之前的内容都是以一个N × N N \times N N × N 的矩阵进行的,这种正方形的矩阵也被称为方阵。其对应的变换就是对N维空间的线性变换,也就是说输入一个N维向量,对应输出一个也是N维的向量。那么如果我想输入一个N维向量,输出一个M维的向量怎么办。这时就需要非正方形的矩阵了,一个M × N M \times N M × N 的矩阵就可以把一个N维向量变成M维向量。[ a 11 a 12 ⋯ a 1 N ⋮ ⋮ ⋱ ⋮ a M 1 a M 2 ⋯ a M N ] × [ x 1 ⋮ x N ] = [ y 1 ⋮ y M ]
\left[\begin{array}{ccc}
{a_{11}} & {a_{12}} & {\cdots} & {a_{1 N}} \\
{\vdots} & {\vdots} & {\ddots} & {\vdots} \\
{a_{M 1}} & {a_{M 2}} & {\cdots} & {a_{M N}}
\end{array}\right] \times\left[\begin{array}{c}
{x_{1}} \\
{\vdots} \\
{x_{N}}
\end{array}\right]=\left[\begin{array}{c}
{y_{1}} \\
{\vdots} \\
{y_{M}}
\end{array}\right]
⎣ ⎢ ⎡ a 1 1 ⋮ a M 1 a 1 2 ⋮ a M 2 ⋯ ⋱ ⋯ a 1 N ⋮ a M N ⎦ ⎥ ⎤ × ⎣ ⎢ ⎡ x 1 ⋮ x N ⎦ ⎥ ⎤ = ⎣ ⎢ ⎡ y 1 ⋮ y M ⎦ ⎥ ⎤
接下来就举两个具体的例子,其中也加入了一些个人理解。比如一个3 × 2 3 \times 2 3 × 2 的矩阵,就能将一个2维向量变成一个3维向量。其实可以做如下等同:[ a b c d e f ] ∗ [ x y ] ⇔ [ a b 0 c d 0 e f 0 ] ∗ [ x y 0 ]
\begin{bmatrix}
a & b \\ c & d \\ e & f
\end{bmatrix} *
\begin{bmatrix} x \\ y \end{bmatrix}
\Leftrightarrow
\begin{bmatrix}
a & b & 0 \\ c & d & 0 \\ e & f & 0
\end{bmatrix} *
\begin{bmatrix} x \\ y \\ 0 \end{bmatrix}
⎣ ⎡ a c e b d f ⎦ ⎤ ∗ [ x y ] ⇔ ⎣ ⎡ a c e b d f 0 0 0 ⎦ ⎤ ∗ ⎣ ⎡ x y 0 ⎦ ⎤
从几何角度来看,就是在一个三维空间中完全忽略了第三个基向量,即只考虑三维空间中的两个向量的线性组合。那么最后输出的结果虽然是一个三维向量,但一定落在[ a c e ] \begin{bmatrix} a \\ c \\ e \end{bmatrix} ⎣ ⎡ a c e ⎦ ⎤ 和[ b d f ] \begin{bmatrix} b \\ d \\ f \end{bmatrix} ⎣ ⎡ b d f ⎦ ⎤ 所形成的平面上。实际上就是将一个平面的坐标系统映射到三维空间的坐标系统,其中平面系统上的基向量在这个三维空间坐标系统中的坐标就是[ a c e ] \begin{bmatrix} a \\ c \\ e \end{bmatrix} ⎣ ⎡ a c e ⎦ ⎤ 和[ b d f ] \begin{bmatrix} b \\ d \\ f \end{bmatrix} ⎣ ⎡ b d f ⎦ ⎤ ,因此原先在这个平面上坐标为[ x y ] \begin{bmatrix} x \\ y \end{bmatrix} [ x y ] 的向量均可以通过左乘平面系统中的基向量在这个三维空间系统中的坐标组成的矩阵计算出其在这个三维空间坐标系统中的坐标。
再考虑M < N M \lt N M < N 的情况,比如一个2 × 3 2 \times 3 2 × 3 的矩阵,就能将一个3维向量变成一个2维向量。可以做如下等同:[ a b c d e f ] ∗ [ x y z ] ⇔ [ a b c d e f 0 0 0 ] ∗ [ x y z ]
\begin{bmatrix}
a & b & c \\ d & e & f
\end{bmatrix} *
\begin{bmatrix} x \\ y \\ z \end{bmatrix}
\Leftrightarrow
\begin{bmatrix}
a & b & c \\ d & e & f \\ 0 & 0 & 0
\end{bmatrix} *
\begin{bmatrix} x \\ y \\ z \end{bmatrix}
[ a d b e c f ] ∗ ⎣ ⎡ x y z ⎦ ⎤ ⇔ ⎣ ⎡ a d 0 b e 0 c f 0 ⎦ ⎤ ∗ ⎣ ⎡ x y z ⎦ ⎤
从几何角度考虑,也就是简单粗暴地直接忽略某个方向上的坐标,其实让右边的3 × 3 3 \times 3 3 × 3 的方阵中的哪一列为0都可以,感觉就是考虑三维空间在某个平面上的映射。如果看成第三列是0,那么就是忽略z坐标,看三维平面在X O Y XOY X O Y 平面上的映射;如果看成第一列是0,那么就是忽略x坐标,看三维平面在Y O Z YOZ Y O Z 平面上的映射;如果看成第二列是0,那么就是忽略y坐标,看三维平面在X O Z XOZ X O Z 平面上的映射。
个人感觉从几何角度来讲,非方阵表示的并不是空间的变换,只是从不同的角度看问题。因此非方阵没有行列式,非方阵也没有逆矩阵。因此实际应用中其实往往处理的还是方阵。