(观前提醒,这是工科AI相关的数学基础的学习笔记,不是数学专业的文章,所以没有严谨的证明和定义,数院大神请勿批评)
3. 矩阵和线性变换
3.1 定义和例子
3.1.1 矩阵的定义
由 m × n m\times n m×n个数 a i j ( i = 1 , 2 , ⋯ , m ; j = 1 , 2 , ⋯ , n ) a_{ij}(i=1,2,\cdots,m;j=1,2,\cdots,n) aij(i=1,2,⋯,m;j=1,2,⋯,n)排成的 m m m行 n n n列的数表
a 11 a 12 ⋯ a 1 m a 21 a 22 ⋯ a 2 m ⋮ ⋮ ⋮ ⋮ a n 1 a n 2 ⋯ a n m \begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 m} \\ a_{21} & a_{22} & \cdots & a_{2 m} \\ \vdots & \vdots & \vdots & \vdots \\ a_{n 1} & a_{n 2} & \cdots & a_{n m} \end{array} a11a21⋮an1a12a22⋮an2⋯⋯⋮⋯a1ma2m⋮anm
称为 m m m行 n n n列矩阵,简称 m × n m\times n m×n矩阵,为表示它是一个整体,总是加一个括弧,并用大写黑体字母表示它,记作:
A = ( a 11 a 12 ⋯ a 1 m a 21 a 22 ⋯ a 2 m ⋮ ⋮ ⋮ ⋮ a n 1 a n 2 ⋯ a n m ) \mathbf{A}=\left(\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 m} \\ a_{21} & a_{22} & \cdots & a_{2 m} \\ \vdots & \vdots & \vdots & \vdots \\ a_{n 1} & a_{n 2} & \cdots & a_{n m} \end{array}\right) A= a11a21⋮an1a12a22⋮an2⋯⋯⋮⋯a1ma2m⋮anm
这 m × n m\times n m×n个数称为矩阵 A \mathbf{A} A的元素,简称为元(我超,元),数 a i j a_{ij} aij位于矩阵 A \mathbf{A} A的第 i i i行第 j j j列。
3.1.2 特殊的矩阵
- 行数与列数都等于 n n n(即行数与列数相等)的矩阵称为 n n n阶方阵 , n n n阶矩阵 A \mathbf{A} A也记作 A n \mathbf{A}_n An;
- 只有一行的矩阵,也称行矩阵 或者行向量;
- 只有一列的矩阵,也称列矩阵 或者列向量。
3.1.3 例子
灰度图像在计算机中是一个二维的矩阵,像素点的数值越小,该像素点对应的颜色越接近于黑色;像素点的数值越大,该像素点对应的颜色越接近白色,像素点的取值是0-255:
某厂向三个商店发送四种产品的数量可列成矩阵:
A = ( a 11 a 12 a 13 a 14 a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 ) \mathbf{A}=\left(\begin{array}{llll} a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \end{array}\right) A= a11a21a31a12a22a32a13a23a33a14a24a34
其中 a i j a_{ij} aij为工厂向第 i i i店发送这第 j j j种产品的数量。
3.2 线性变换
3.2.1 线性变换的几何表示
线性空间种的运动,被称为线性变换 ,线性空间种的一个向量变成另一个向量,都可以通过一个线性变换来完成。输入向量(Input vector)通过线性变换变到输出向量(Output vector)
线性变换需要满足两个条件:
- 变换后的坐标原点在空间中要保持不变;
- 向量的箭头的形状(不能被弯曲)在变换后也要保持不变。
线性变换可以对空间中所有的向量进行,比如把二维空间中的所有向量想象成填满空间的点。
那么空间里的线性变换,其实就相当于对空间这个平面进行拉扯(坐标原点没变)。
下面哪个是线性变换?
只有右下角的图是线性变换,其他要么原点发送改变,要么箭头出现弯曲。
3.2.2 线性变换的数值描述------矩阵
在一个线性空间中,选定一组基向量 ,将变换之后的基向量的数值列表放在一个矩阵里,那么这个矩阵就可以代表这个线性变换。我们对下图中两个向量进行线性变换后,这两个基向量到了另外一个位置,然后用一组新的数值列表表示它们,这个矩阵就代表了线性变换。
比如在这张图中有两个基向量 i ⃗ \vec{i} i 和 j ⃗ \vec{j} j ,黄色的向量为 V ⃗ \vec{V} V ,一旦向量空间中的基向量确定,那么空间中的任何一个向量都可以用基向量的线性组合来表示。比如 V ⃗ \vec{V} V 就可以通过两个基向量 i ⃗ \vec{i} i 和 j ⃗ \vec{j} j 线性组合表示为 V ⃗ = − 1 i ⃗ + 2 j ⃗ \vec{V}=-1\vec{i}+2\vec{j} V =−1i +2j ,在几何上可以这样理解:向量 V ⃗ \vec{V} V 可以通过基向量 i ⃗ \vec{i} i 在反方向上进行一个单位的拉伸,然后对于 j ⃗ \vec{j} j 这个基向量在它原本的方向上进行两个单位的拉伸,然后将拉伸后的二者相加得到向量 V ⃗ \vec{V} V .
之后我们对空间进行拉伸,得到了下图(图中 i ⃗ \vec{i} i 和 j ⃗ \vec{j} j 是拉伸后的结果,黄色向量是 V ⃗ \vec{V} V 拉伸之后的结果):
我们可以看到,由于线性变换的性质,网格线在变换之后会保持平行且等距,新空间里的黄色向量仍然可以通过 i ⃗ \vec{i} i 和 j ⃗ \vec{j} j 线性组合得到。
在对空间进行变换后, V ⃗ \vec{V} V 仍然可以由基向量表示,但是 变换后的 V ⃗ = − 1 变换后的 i ⃗ + 2 变换后的 j ⃗ 变换后的\vec{V}=-1变换后的\vec{i}+2变换后的\vec{j} 变换后的V =−1变换后的i +2变换后的j ,这个过程就是对我们的 V ⃗ \vec{V} V 在空间上进行一个线性变换,用公式来表示就是 A x = y \mathbf{Ax}=\mathbf{y} Ax=y,其中 A = ( 1 3 − 2 0 ) , x = ( − 1 2 ) , y = ( 5 2 ) \mathbf{A}=\left(\begin{array}{cc} 1 & 3 \\ -2 & 0 \end{array}\right), \mathbf{x}=\binom{-1}{2}, \mathbf{y}=\binom{5}{2} A=(1−230),x=(2−1),y=(25)
3.3 矩阵的运算
3.3.1 矩阵的加法
对应元素相加,与向量的加法运算一致。只有当两个矩阵的行数和列数一致时才可以相加,即:
C = A + B = ( a i j ) m × n + ( b i j ) m × n = ( c i j ) m × n , \mathbf{C}=\mathbf{A}+\mathbf{B}=\left(a_{i j}\right){m \times n}+\left(b{i j}\right){m \times n}=\left(c{i j}\right)_{m \times n}, C=A+B=(aij)m×n+(bij)m×n=(cij)m×n,
其中, c i j = a i j + b i j ( i = 1 , 2 , ⋯ , m ; j = 1 , 2 , ⋯ , n ) c_{i j}=a_{i j}+b_{i j}(i=1,2, \cdots, m ; j=1,2, \cdots, n) cij=aij+bij(i=1,2,⋯,m;j=1,2,⋯,n),即对应元素相加。
3.3.2 矩阵的数乘
设 k k k是一个数, A \mathbf{A} A是一个 m × n m\times n m×n矩阵,数 k k k和 A \mathbf{A} A的乘积称为数乘矩阵,即
k A = A k = k [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋮ a m 1 a m 2 ⋯ a m n ] = [ k a 11 k a 12 ⋯ k a 1 n k a 21 k a 22 ⋯ k a 2 n ⋮ ⋮ ⋮ k a m 1 k a m 2 ⋯ k a m n ] = ( k a i j ) m × n , \begin{aligned} k \mathbf{A} & =\mathbf{A} k=k\left[\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 n} \\ a_{21} & a_{22} & \cdots & a_{2 n} \\ \vdots & \vdots & & \vdots \\ a_{m 1} & a_{m 2} & \cdots & a_{m n} \end{array}\right]=\left[\begin{array}{cccc} k a_{11} & k a_{12} & \cdots & k a_{1 n} \\ k a_{21} & k a_{22} & \cdots & k a_{2 n} \\ \vdots & \vdots & & \vdots \\ k a_{m 1} & k a_{m 2} & \cdots & k a_{m n} \end{array}\right] \\ & =\left(k a_{i j}\right)_{m \times n}, \end{aligned} kA=Ak=k a11a21⋮am1a12a22⋮am2⋯⋯⋯a1na2n⋮amn = ka11ka21⋮kam1ka12ka22⋮kam2⋯⋯⋯ka1nka2n⋮kamn =(kaij)m×n,
即 A \mathbf{A} A的每个元素都乘以 k k k.
3.3.3 矩阵和向量的乘法
矩阵和向量的乘法,本质上是对向量在空间上进行线性变换.
如果是左乘向量,那就是按向量的行和矩阵的列向量做内积,也就是按3.3.4的算法进行,右乘也一样,列向量可看作列矩阵,行向量可看作行矩阵,矩阵和向量的乘法完全可以按照3.3.4矩阵和矩阵的乘法法则进行。
3.3.4 矩阵和矩阵的乘法
代数上,矩阵之间的乘法是这样的(也就是矩阵 M 2 \mathbf{M}_2 M2的行向量和 M 1 \mathbf{M}_1 M1的列向量进行内积得到,矩阵的每一行可视为行向量,矩阵的每一列可视为列向量),矩阵的乘法只能是 m × n m\times n m×n的矩阵与 n × s n\times s n×s的矩阵相乘,如果左边矩阵的列数不等于右边矩阵的行数,则没法相乘。
几何上,矩阵相乘是空间中两种线性变换的叠加,比如在下图当中,我们首先对向量空间进行一个旋转(Rotation),然后再进行一个剪切(Shear),这个结果相当于对向量左乘一个矩阵(错切(shear)变换实际上是平面景物在投影平面上的非垂直投影效果。图像错切变换也称为图像剪切、错位或错移变换。)
3.5 矩阵的转置
把矩阵 A \mathbf{A} A的行换成同序数的列得到一个新矩阵,叫做 A \mathbf{A} A的转置矩阵 ,记作 A T \mathbf{A}^{T} AT.
例如矩阵:
A = ( 1 2 0 3 − 1 1 ) \mathbf{A}=\left(\begin{array}{ccc} 1 & 2 & 0 \\ 3 & -1 & 1 \end{array}\right) A=(132−101)
的转置矩阵为:
A = ( 1 3 2 − 1 0 1 ) \mathbf{A}=\left(\begin{array}{cc} 1 & 3 \\ 2 & -1 \\ 0 & 1 \end{array}\right) A= 1203−11
矩阵的转置也是一种运算,满足下述运算规律(假设运算都是可行的,加法需要满足矩阵行和列一致,乘法需要满足其条件,见3.3.4)
( A T ) T = A ( A + B ) T = A T + B T ( λ A ) T = λ A T , λ 是标量 ( A B ) T = B T A T . \left(\mathbf{A}^{T}\right)^{T}=\mathbf{A} \\ (\mathbf{A}+\mathbf{B})^{T}=\mathbf{A}^{T}+\mathbf{B}^{T} \\ (\lambda \mathbf{A})^{T}=\lambda \mathbf{A}^{T},\lambda是标量 \\ (\mathbf{A B})^{T}=\mathbf{B}^{T} \mathbf{A}^{T} . (AT)T=A(A+B)T=AT+BT(λA)T=λAT,λ是标量(AB)T=BTAT.
3.6 矩阵的行列式
3.6.1 行列式的定义
行列式是数学中的一个函数,将一个 n × n n\times n n×n方阵 A \mathbf{A} A映射成一个标量,记作 det ( A ) \det(\mathbf{A}) det(A)或 ∣ A ∣ |\mathbf{A}| ∣A∣。
3.6.2 二阶和三阶行列式的计算
四阶及以上行列式计算方法详见:
【高等代数笔记】(8-13)N阶行列式
【高等代数笔记】(14-17)N阶行列式
【高等代数笔记】(18)N阶行列式
2阶行列式计算公式:
∣ A ∣ = ∣ a b c d ∣ = a d − b c |A|=\left|\begin{array}{ll} a & b \\ c & d \end{array}\right|=a d-b c ∣A∣= acbd =ad−bc
3阶行列式计算公式:
∣ A ∣ = ∣ a b c d e f g h i ∣ = a e i + b f g + c d h − c e g − b d i − a f h |A|=\left|\begin{array}{lll} a & b & c \\ d & e & f \\ g & h & i \end{array}\right|=a e i+b f g+c d h-c e g-b d i-a f h ∣A∣= adgbehcfi =aei+bfg+cdh−ceg−bdi−afh
3.6.3 行列式的几何意义
在二维空间里,行列式表示矩阵对应的线性变换前后的面积比,若在高维空间里,则是体积。
如果一个矩阵的行列式为负数,说明空间里的向量都进行了180度的翻转。
3.7 逆矩阵
3.7.1 逆矩阵的定义
给定一个 n n n阶方阵 A \mathbf{A} A,若存在一 n n n阶方阵 B \mathbf{B} B,使得 A B = B A = I n \mathbf{A}\mathbf{B}=\mathbf{B}\mathbf{A}=\mathbf{I}_n AB=BA=In,其中 I n \mathbf{I}_n In是 n n n阶单位矩阵(就是从左上角到右下角的这个对角线上的元素全是1,其余位置全是0的方阵),则称 A \mathbf{A} A是可逆 的,且 B \mathbf{B} B是 A \mathbf{A} A的逆矩阵,记作 A − 1 \mathbf{A}^{-1} A−1.
只有方阵才可能但非必然有逆矩阵,若方阵 A \mathbf{A} A的逆矩阵存在,则称 A \mathbf{A} A为非奇异方阵 或可逆方阵 。
例如:
( 1 1 0 1 ) ( 1 − 1 0 1 ) = ( 1 0 0 1 ) \left(\begin{array}{ll} 1 & 1 \\ 0 & 1 \end{array}\right)\left(\begin{array}{cc} 1 & -1 \\ 0 & 1 \end{array}\right)=\left(\begin{array}{ll} 1 & 0 \\ 0 & 1 \end{array}\right) (1011)(10−11)=(1001)
3.7.2 逆矩阵的几何意义
几何上,一个矩阵的逆矩阵代表的是该矩阵的反运动。
3.8 求解线性方程组
任何一个线性方程组可以写成矩阵和向量组相乘得到另一个向量,比如:
我们知道,矩阵和向量乘法相当于一个向量上施加矩阵 A \mathbf{A} A描述的线性变换:
那么如果要从 v ⃗ \vec{v} v 变成 x ⃗ \vec{x} x ,其实就相当于在向量 v ⃗ \vec{v} v 上施加矩阵 A \mathbf{A} A的反运动,也就是矩阵 A − 1 \mathbf{A}^{-1} A−1,代数上,相当于在 A x ⃗ = v ⃗ \mathbf{A}\vec{x}=\vec{v} Ax =v 的两边同时乘上 A − 1 \mathbf{A}^{-1} A−1,得到 A − 1 A x ⃗ = A − 1 v ⃗ \mathbf{A}^{-1}\mathbf{A}\vec{x}=\mathbf{A}^{-1}\vec{v} A−1Ax =A−1v ,因为 A − 1 A = I \mathbf{A}^{-1}\mathbf{A}=\mathbf{I} A−1A=I,所以 x ⃗ = A − 1 v ⃗ \vec{x}=\mathbf{A}^{-1}\vec{v} x =A−1v ,当然,这里的前提是矩阵 A \mathbf{A} A的逆矩阵存在。
如果逆矩阵不存在,那也有两种情况:
如果线性变换的结果使得空间中所有的向量在一条直线上,这种情况下,如果 V ⃗ \vec{V} V 刚好在这条线上,那么解存在(Solution exist);如果 V ⃗ \vec{V} V 不在这条直线上,说明线性方程组的解不存在(No solution exist)。