子节 2.2.1 矩阵的定义
线性方程组的一般形式为
\begin{equation}
\left\{\begin{array}{cl}
a_{11}x_1+\cdots+a_{1n}x_n&= b_1,\\
a_{21}x_1+\cdots+a_{2n}x_n&= b_2,\\
\vdots& \\
a_{m1}x_1+\cdots+a_{mn}x_n&= b_m.\\
\end{array}\right.\tag{2.2.1}
\end{equation}
注意到线性方程组本质上是由方程中所有的数字及其排列方式决定的。将上式中未知数的系数按其原有相对位置排成一个2维数组,则可以得到如下的定义:
定义 2.2.1.
由\(mn\)个数\(a_{ij}\ (i=1,\ldots, m;\ j=1,\ldots,n) \) 排成\(m\)行、\(n\)列的矩形阵列:
\begin{equation*}
A = {\color{blue} \begin{pmatrix}
{{a_{11}}}&{{a_{12}}}& \cdots &{{a_{1n}}}\\
{{a_{21}}}&{{a_{22}}}& \cdots &{{a_{2n}}}\\
\vdots & \vdots &{\ddots}& \vdots \\
{{a_{m1}}}&{{a_{m2}}}& \cdots &{{a_{mn}}}
\end{pmatrix}}{\triangleq (a_{ij})_{m\times n}}
\end{equation*}
称为\(m\)行\(n\)列矩阵,或简记为 \(m\times n\) 矩阵。
特别地,若\(m=n\),则称\(A\)为方阵。
本书中选择使用圆括号()作为矩阵的整体性标志,除了这种记法外,另一种常用记法是使用方括号[],即矩阵也常被记作
\begin{equation*}
A = {\color{blue} \begin{bmatrix}
{{a_{11}}}&{{a_{12}}}& \cdots &{{a_{1n}}}\\
{{a_{21}}}&{{a_{22}}}& \cdots &{{a_{2n}}}\\
\vdots & \vdots &{\ddots}& \vdots \\
{{a_{m1}}}&{{a_{m2}}}& \cdots &{{a_{mn}}}
\end{bmatrix}}{\triangleq [a_{ij}]_{m\times n}},
\end{equation*}
这两者只是记号上的区别。
与矩阵相关的还有如下一些常用术语:
称\(m\)为矩阵的行数,\(n\)称为列数;
-
称\(m\times n\)为矩阵的阶数,需要注意的是这里\(\times\)只是一个记号,不代表乘法运算,\(3\times 2\)和\(2\times 3\)表示不同的矩阵阶数。
特别地,方阵的阶数一个数字就够了,\(n\times n\)阶矩阵也被简称为\(n\)阶方阵。
称\(a_{ij}\)为矩阵\(A\)的第\(i\)行第\(j\)列元素或第\((i,\ j)\)元素;\(i\)称为\(a_{ij}\)的行指标,\(j\)称为\(a_{ij}\)的列指标;
行、列指标相同的元素称为(主)对角元,如\(a_{ii}\)就是\(A\)的第\(i\)个对角元。
将线性方程组等式右端所有的常数项按列的方式排列也可以获得一个矩阵
\begin{equation*}
\begin{pmatrix}
b_1 \\ \vdots\\ b_n
\end{pmatrix},
\end{equation*}
这样的列数为1的矩阵也可称为列矩阵(也称为列向量)。这种矩阵有着特别的意义,在后续第4章中,我们将从另一个角度来重新理解这种矩阵。类似地也可以定义行矩阵(或行向量)。
若矩阵\(A\)的元素全为实数,即
\begin{equation*}
a_{ij}\in {\mathbb{R}}\ (i=1, \ldots,m;\ j=1,\ldots,n)
\end{equation*}
则称\(A\)为实矩阵。类似可以定义复矩阵、有理矩阵等。
例 2.2.2. 矩阵的简单例子.
\(\begin{pmatrix}
1 & 0 & 5\\
3 & -9 & 2
\end{pmatrix}\)是一个\(2\times 3\)阶实矩阵,其行数为2,列数为3。矩阵的第\((2,2)\)元素为\(-9\)。
\(\begin{pmatrix}
1 & 0 \\
3i & -9
\end{pmatrix}\)是一个2阶复方阵,\(-9\)是它的第2个对角元。
Sage中生成矩阵的命令是matrix。
用matrix生成同一个矩阵有多种方法,例如下面的命令也可以。
更多生成矩阵的方式,请使用 "matrix?"命令查看官方文档。
矩阵的行数和列数可以通过下面的两个命令获得。
由定义,矩阵是由其所有元素及元素的排列方式共同决定的,因此只有这些都一样时,对应的矩阵才一样。具体地, 设\(A=(a_{ij})_{m\times n}\)、\(B=(b_{ij})_{p\times q}\)是两个矩阵,则当下述条件:
两个矩阵阶数相同,即\(m=p\)且\(n=q\);
元素对应相等,即对\(\forall i=1,\dots,m;j=1,\dots,n\)均有 \(a_{ij}=b_{ij}\);
都满足时,定义\(A\)与\(B\)相等,记作\(A=B\)。
在sage中,可以使用双等号==来判断两个给定的矩阵是否相等。
子节 2.2.2 矩阵的乘法运算
作为数字的推广,矩阵中也定义有多种运算。矩阵运算的概念是应实际需要引进的,而不是数学家的任意创造。下面我们优先介绍矩阵的最重要运算,即矩阵乘法运算。我们将用这个运算来化简线性方程组的表示方式。
定义 2.2.3.
设\(A= (a_{ij})_{{\color{blue}m}\times {\color{red}k}}\)是\({\color{blue}m}\times {\color{red}k}\)矩阵,\(B=(b_{ij})_{{\color{red}k}\times {\color{blue}n}}\)是\({\color{red}k}\times {\color{blue}n}\)矩阵,此时定义\(A\)与\(B\)的乘积是一个\({\color{blue}m}\times {\color{blue}n}\)矩阵\(C=(c_{ij})_{{\color{blue}m}\times {\color{blue}n}}\),其中
\begin{align*}
c_{{\color{blue}i}j} & = a_{{\color{blue}i}{\color{red}1}}b_{{\color{red}1}j} +a_{{\color{blue}i}{\color{red}2}}b_{{\color{red}2}j}+\cdots+ a_{{\color{blue}i}{\color{red}k}}b_{{\color{red}k}j}\\
& = \sum_{s=1}^k a_{{\color{blue}i}{\color{red}s}}b_{{\color{red}s}j},
\end{align*}
记作\(C=A\times B\)、或\(C=AB\)。
先来看几个具体的例子。
例 2.2.4. 矩阵乘法具体举例.
设\(A=\begin{pmatrix}
1 & -1\\
0 & 2\\
-3 & 5
\end{pmatrix} \),\(B=\begin{pmatrix}
1 & 2\\
3 & 4\\
\end{pmatrix} \)。则此时\(A\)的阶数为\(3\times 2\),\(B\)的阶数为\(2\times 2\),即\(m=3\),\(k=2\),\(n=2\),于是\(AB\)是一个\(3\times 2\)阶矩阵,且
\begin{align*}
AB \amp = \begin{pmatrix}
1 & -1\\
0 & 2\\
-3 & 5
\end{pmatrix}\begin{pmatrix}
1 & 2\\
3 & 4\\
\end{pmatrix} \\
\amp = \begin{pmatrix}
1\times 1+(-1)\times 3 & 1\times 2+(-1)\times 4\\
0\times 1+2\times 3 & 0\times 2+2\times 4\\
-3\times 1+5\times 3 & -3\times 2+5\times 4
\end{pmatrix} \\
\amp = \begin{pmatrix}
-2 & -2\\
6 & 8\\
12 & 14
\end{pmatrix}.
\end{align*}
在sage中,矩阵乘法的运算符是“*”。
对于初学者,矩阵乘法是一个相对复杂的运算,需要付出更多的精力。在学习初期,我们建议先手动计算一些矩阵的乘法,然后利用sage来检验计算结果是否正确,获得对矩阵乘法的直观感觉。
关于矩阵乘法,有如下几个要点需要提醒:
矩阵乘法对矩阵阶数有限制,不是任给两个矩阵都可乘,也不是两个同阶矩阵都可乘。两个矩阵\(A\)与\(B\)的乘积\(AB\)有意义当且仅当\(A\)的列数与\(B\)的行数相等。
当乘积矩阵\(AB\)有意义时,\(AB\)的行数等于矩阵\(A\)的行数,\(AB\)的列数等于矩阵\(B\)的列数。
乘积矩阵\(AB\)第\(i\)行、第\(j\)列的元素由矩阵\(A\)的第\(i\)行和矩阵\(B\)的第\(j\)列共同决定,而与矩阵的其它元素无关。
矩阵乘法中元素的对应关系可以用下图来更直观的描述。
图 2.2.5. 矩阵乘法中元素对应关系示意图(本图修改自https://texample.net/tikz/examples/中的一个例子)
\begin{equation*}
A = \begin{pmatrix}
a_{11} & \cdots & a_{1n}\\
\vdots & \ddots & \vdots\\
a_{m1} & \cdots & a_{mn}
\end{pmatrix},\quad
x = \begin{pmatrix}
x_1\\ \vdots \\ x_n
\end{pmatrix},\quad \beta = \begin{pmatrix}
b_1\\ \vdots \\ b_m
\end{pmatrix},
\end{equation*}
\begin{equation*}
A x= \beta,
\end{equation*}
称\(A\)为此线性方程组的系数矩阵,\(\beta\)为右端项或常数项。 这种记法使得一般的线性方程组与一元一次方程\(ax=b\)在形式上得到了统一。
子节 2.2.3 矩阵乘法的性质
随着学习的深入,我们会逐渐意识到矩阵乘法是最重要、最有用的运算之一。下面我们来进一步熟悉这个运算的性质,这些性质有些和数的运算性质相同,有些则非常不同。
矩阵乘法与数字乘法的第一个显著差别是交换律。我们知道任给两个数字\(a\)和\(b\),\(ab\)和\(ba\)必定相等,即\(ab=ba\),这个性质常被称为数字乘法满足交换律。当我们把数字\(a\)、\(b\)换成矩阵\(A\)、\(B\)时,等式\(AB=BA\)就不再一定成立了。来看下面的例子。
例 2.2.6. 矩阵乘法的不可交换性.
取
\begin{equation*}
A = \begin{pmatrix}
1 & 0 & 1\\
2 & 1 & 0
\end{pmatrix},\quad B=\begin{pmatrix}
1 & 0 & 1 & 1\\
1 & 1 & 2 & -1\\
-1 & 0 & -1 & 0
\end{pmatrix},
\end{equation*}
则此时\(AB\)有定义,但\(BA\)没有定义。
取\(A = \begin{pmatrix}
1 & 0 & 4
\end{pmatrix}\),\(B=\begin{pmatrix}
1\\
1\\
0
\end{pmatrix}\),此时\(AB\)和\(BA\)都有定义,但\(AB=1\)是一个数(即\(1\times 1\)阶矩阵),\(BA\)却是一个\(3\times 3\)阶矩阵,\(AB\)和\(BA\)不可能相等。
取\(A=\begin{pmatrix}
0 & 0\\
0 & 1
\end{pmatrix}\),\(B= \begin{pmatrix}
0 & 1\\
0 & 0
\end{pmatrix}\),此时\(AB\)和\(BA\)都是2阶方阵,但\(AB=\begin{pmatrix}
0 & 0\\
0 & 0
\end{pmatrix}\),\(BA=\begin{pmatrix}
0 & 1\\
0 & 0
\end{pmatrix}\),二者仍不相等。
总结一下,矩阵乘法不满足交换律有下面3层含义:
\(AB\)有定义的前提是\(A\)的列数等于\(B\)的行数,这个前提不能保证\(B\)的列数也等于\(A\)的行数,即\(AB\)有定义不能保证\(BA\)有定义。当\(AB\)有定义但\(BA\)没有定义时,此时\(AB\)和\(BA\)不可能相等;
即便\(AB\)和\(BA\)都有定义,\(AB\)和\(BA\)的阶数也可能不同,当阶数不同时\(AB\)和\(BA\)不可能相等;
即便\(AB\)和\(BA\)都有定义且\(AB\)和\(BA\)的阶数也一样,此时仍有可能\(AB\ne BA\)。
虽然一般情况下\(AB\)和\(BA\)不一定相等,但对于一些特定的\(A\)和\(B\),\(AB\)和\(BA\)有可能相等。若\(AB=BA\),则称矩阵\(A\)和\(B\)可交换。容易看到可交换的两个矩阵一定是同阶方阵。
例 2.2.7. 单位矩阵和可交换性.
称所有对角元都为1、非对角元都为0的\(n\)阶方阵为\(n\)阶单位矩阵,记作\(E_n\)(或\(I_n\)),即
\begin{equation*}
E_n(= I_n)= \begin{pmatrix}
1 & 0 & \cdots & 0\\
0 & 1 & \ddots &
\vdots\\
\vdots & \ddots & \ddots & 0\\
0 & \cdots & 0 & 1
\end{pmatrix}.
\end{equation*}
设\(B\)是任意的一个\(n\)阶方阵,则可以验证\(E_n\)与\(B\)可交换,且
\begin{equation*}
E_nB=BE_n=B.
\end{equation*}
上例说明单位矩阵\(E_n\)在矩阵乘法中起到了类似于数字1在数字乘法的作用。单位矩阵\(E_n\)是一种非常重要的矩阵,后面我们会经常用到它。
Sage中生成单位矩阵的命令为identity_matrix。
所有非对角元都为0的方阵称为对角矩阵。\(n\)阶对角矩阵可以由它的\(n\)个对角元决定,因此可用\({\rm diag}(d_1,\ldots,d_n)\)来表示一个对角矩阵,即
\begin{equation*}
{\rm diag}(d_1,\ldots,d_n) =\begin{pmatrix}
d_1 & 0 & \cdots & 0\\
0 & d_2 & \ddots &
\vdots\\
\vdots & \ddots & \ddots & 0\\
0 & \cdots & 0 & d_n
\end{pmatrix}.
\end{equation*}
单位矩阵是对角元都为1的对角矩阵。
Sage中生成对角矩阵的命令为diagonal_matrix。
对角矩阵也是一类非常简单且重要的矩阵。对角矩阵参与的矩阵乘法也有较为明显的规律。
例 2.2.8. 对角矩阵与矩阵乘法.
设\(A={\rm diag}(a_1,\dots,a_n)\)是一个对角矩阵,\(B = (b_{ij})_{n\times k}\)和\(C = (c_{ij})_{m\times n}\)是两个一般的矩阵。则
\begin{equation*}
AB = \begin{pmatrix}
a_1b_{11} & a_{1}b_{12} & \cdots & a_1 b_{1k}\\
a_2b_{21} & a_2b_{22} & \cdots & a_2 b_{2k}\\
\vdots & \vdots & \ddots & \vdots\\
a_nb_{n1} & a_nb_{n2} & \cdots & a_nb_{nk}
\end{pmatrix},
\end{equation*}
\begin{equation*}
CA = \begin{pmatrix}
a_1c_{11} & a_2c_{12} & \cdots & a_n c_{1n}\\
a_1c_{21} & a_2c_{22} & \cdots & a_n c_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
a_1c_{m1} & a_2b_{m2} & \cdots & a_nc_{mn}
\end{pmatrix}.
\end{equation*}
特别地,若\(D = {\rm diag}(d_1,\dots,d_n)\),则\(AD\)和\(DA\)都是对角矩阵
\begin{equation*}
AD=DA ={\rm diag}(a_1d_1,\dots,a_nd_n).
\end{equation*}
称形如
\begin{equation*}
A=\begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1n}\\
{\color{red}0} & a_{22} & \ddots & \vdots\\
{\color{red}\vdots} & {\color{red}\ddots} & \ddots & a_{n-1,n}\\
{\color{red}0} &{\color{red}\cdots} & {\color{red}0} & a_{nn}
\end{pmatrix}
\end{equation*}
的矩阵为上三角矩阵,即矩阵\(A\)的元素满足\(a_{ij}=0\),\(\forall i>j\),\(i,j=1,\dots,n\)。
类似地,称形如
\begin{equation*}
A=\begin{pmatrix}
a_{11} & {\color{red}0} & {\color{red}\cdots} & {\color{red}0}\\
a_{21} & a_{22} & {\color{red}\ddots} & {\color{red}\vdots}\\
\vdots & \ddots & \ddots & {\color{red}0}\\
a_{n1} & \cdots & a_{n,n-1} & a_{nn}
\end{pmatrix}
\end{equation*}
的矩阵为下三角矩阵,即矩阵\(A\)的元素满足\(a_{ij}=0\),\(\forall i < j\),\(i,j=1,\dots,n\)。
上三角矩阵和下三角矩阵都是方阵。对角矩阵既是上三角矩阵也是下三角矩阵。上三角矩阵和下三角矩阵的乘法也有较为明显的规律。
命题 2.2.9.
设\(A\)和\(B\)是同阶上三角矩阵,则\(AB\)也是上三角矩阵。
设\(A\)和\(B\)是同阶下三角矩阵,则\(AB\)也是下三角矩阵。
设\(A\)和\(B\)是同阶对角矩阵,则\(AB\)也是对角矩阵。
所有元素都是0的矩阵称为零矩阵,\(m\times n\)阶零矩阵常被记作\(0_{m\times n}\),当阶数已知或不重要时,零矩阵也常用0直接表示。
Sage中可以用命令zero_matrix生成零矩阵。
零矩阵在矩阵乘法中具有和数字0类似的性质。在可乘的前提下,零矩阵与任意其它矩阵相乘,无论是乘在左边还是右边,其结果一定是零矩阵。
在数字乘法中,我们熟悉的一个事实是两个非0的数乘积一定非0。这个规律迁移到矩阵乘法时不再成立。例如前面的例子中已经出现的,取\(A=\begin{pmatrix}
0 & 0\\
0 & 1
\end{pmatrix}\),\(B= \begin{pmatrix}
0 & 1\\
0 & 0
\end{pmatrix}\),\(A\)、\(B\)均不是零矩阵,但\(AB=0_{2\times 2}\)。
非0矩阵乘积可能为0的事实直接导致的结果是矩阵乘法消去律不再成立。
命题 2.2.10.
矩阵乘法不满足消去律,即
\(A\ne0,\ AB=AC {\color{red}\not\Rightarrow} B=C\);
\(AB=0\)且\(A\ne 0\)\({\color{red}\not\Rightarrow}\) \(B=0\)。
上述命题中,我们列出的是“左”消去律不成立,即消去的矩阵写在左边;事实上“右”消去律也不成立,这部分请读者自行完成。
矩阵乘法和数字乘法的相同点之一是它们都满足结合律。
定理 2.2.11.
设\(A = (a_{ij})_{m\times n}\)、\(B = (b_{ij})_{n\times k}\)、\(C = (c_{ij})_{k\times p}\),则
\begin{equation*}
(AB)C = A(BC).
\end{equation*}
证明.
因为\(AB\)是\(m\times k\)矩阵,\(BC\)是\(n\times p\)矩阵,所以\((AB)C\)和\(A(BC)\)都是\(m\times p\)矩阵。对任意\(1\leq i\leq m, 1\leq j\leq p\),接下来我们考虑\((AB)C\)与\(A(BC)\)的第\(i\)行第\(j\)列元素。为方便起见,以下记
\begin{equation*}
AB=\left(u_{il}\right)_{m\times k}, BC=\left(v_{sj}\right)_{n\times p},
\end{equation*}
其中
\begin{equation*}
u_{il}=\sum\limits_{s=1}^na_{is}b_{sl}, v_{sj}=\sum\limits_{l=1}^kb_{sl}c_{lj}.
\end{equation*}
则\((AB)C\)的第\(i\)行第\(j\)列元素为
\begin{equation*}
\sum\limits_{l=1}^k u_{il}c_{lj}=\sum\limits_{l=1}^k\left(\sum\limits_{s=1}^na_{is}b_{sl}\right)c_{lj}=\sum\limits_{l=1}^k\sum\limits_{s=1}^n a_{is}b_{sl}c_{lj},
\end{equation*}
\(A(BC)\)的第\(i\)行第\(j\)列元素为
\begin{equation*}
\sum\limits_{s=1}^n a_{is}v_{sj}=\sum\limits_{s=1}^n a_{is}\left(\sum\limits_{l=1}^kb_{sl}c_{lj}\right)=\sum\limits_{s=1}^n\sum\limits_{l=1}^k a_{is}b_{sl}c_{lj}.
\end{equation*}
由于
\begin{equation*}
\sum\limits_{l=1}^k\sum\limits_{s=1}^n a_{is}b_{sl}c_{lj}=\sum\limits_{s=1}^n\sum\limits_{l=1}^k a_{is}b_{sl}c_{lj},
\end{equation*}
故\((AB)C\)与\(A(BC)\)的第\(i\)行第\(j\)列元素相同(\(i=1,\ldots,m,j=1,\ldots,p\)),从而\((AB)C=A(BC)\)。
虽然结合律保证了在进行多个矩阵相乘时,无论怎样的运算次序,最终获得的结果都是一样的,但实际计算时,不同运算次序的选择对于运算量有很大影响。
例 2.2.12. 乘法次序对运算量的影响.
取\(A=(1,2,3,4,5)\)、\(B=\begin{pmatrix}
6\\7\\8\\9\\10
\end{pmatrix}\),分别按照\(ABA =(AB)A\)和\(ABA = A(BA)\)两个公式计算\(ABA\),并比较两者在运算量上的差异。
子节 2.2.4 矩阵的其它常用运算
除乘法外,我们还会用到其它一些矩阵的运算,这些运算相对于乘法都比较简单,我们在本小节中一并介绍。
加(减)法
定义 2.2.13.
设\(A=(a_{ij})_{m\times n}\)、\(B=(b_{ij})_{m\times n}\)是两个同阶矩阵。定义\(A\)与\(B\)的和,记作\(A+B\),为对应元素相加所得的矩阵,即
\begin{equation*}
A+B =(a_{ij}+b_{ij})_{m\times n}.
\end{equation*}
类似地,定义\(A\)与\(B\)的差,记作\(A-B\),为对应元素相加所得的矩阵,即
\begin{equation*}
A-B =(a_{ij}-b_{ij})_{m\times n}.
\end{equation*}
如下面的程序片段所示。
数乘运算
定义 2.2.14.
设\(c\in \F\)是一个数,\(A=(a_{ij})_{m\times n}\)是一个矩阵。定义\(c\)与\(A\)的数乘,记作\(cA\),为将\(A\)的每一个元素都乘以\(c\)所获得的与\(A\)同阶的矩阵,即
\begin{equation*}
cA =(ca_{ij})_{m\times n}.
\end{equation*}
在sage中,矩阵乘法和数乘都使用“*”做为运算符,但两者是不同的运算,请读者体会两者间的差异。
与矩阵数乘有关的运算规则有:
数乘和加法的协调: \(c(A+B)=cA+cB\);
数的加法与数乘的协调: \((c+d)A=cA+dA\);
数的乘法与数乘的协调: \((cd)A=c(dA)\);
数1与数乘的协调: \(1A=A\);
数0与数乘的协调: \({\color{blue}0}A={\color{red}0_{m\times n}}\)。
此外,矩阵乘法与加法、数乘运算还满足下面的运算规律:
这些运算规律都很简单,请读者自行验证。
转置运算
定义 2.2.15.
设\(A=(a_{ij})_{m\times n}\),\(B=(b_{ij})_{n\times m}\)。若\(b_{{\color{blue} i}{\color{red} j}} = a_{{\color{red} j}{\color{blue} i}}\)对\(\forall i,j\)均成立,则称\(B\)是\(A\)的转置,记作\(B=A^{T}\)(或\(B=A'\))。
Sage中求转置的命令为transpose。
转置运算满足下列性质:
\((A^T)^T = A\);
\((A+B)^T =A^T+B^T \);
\((cA)^T = c A^T\);
\({\color{red}(AB)^T= B^T A^T}\);
\({\color{red}(A_1A_2\cdots A_s)^T= A_s^T A_{s-1}^T\cdots A_1^T}\)。
上述性质都可以直接验证,使用时需要特别注意的是最后两条性质。
与转置运算相关的有两个重要矩阵类。
定义 2.2.16.
一个方阵\(A\)若满足\(A=A^T\),则称\(A\)为对称矩阵;若\(A= {\color{red}-} A^T\),则称\(A\)为反对称矩阵。
任意方阵\(A\)都可以分解为对称矩阵与反对称矩阵的和,即存在对称矩阵\(B\),反对称矩阵\(C\), 使得\(A=B+C\)。这个结论的证明留作习题。
共轭运算
共轭运算通常只针对复矩阵。注意到复数是有共轭运算的:设复数\(z=a+bi\in \mathbb{C} (a,b\in \mathbb{R})\),称\(a-bi\)为\(z\)的共轭元,记为 \(\overline{z}\)。
Sage中求共轭的命令为conjugate。
定义 2.2.17.
复数域\(\mathbb{C}\)上矩阵\(A=(a_{jk})_{m\times n}\)的 共轭矩阵,记作\(\bar{A}\),定义为 \(\bar{A} = (\overline{a_{jk}})_{m\times n}\)。
共轭运算有如下一些常用的运算规则:
\(\overline{(\bar{A})}=A\);
\(\overline{A+B}=\bar{A}+\bar{B} \);
\(\overline{cA}=\bar{c}\bar{A} \);
\(\overline{AB}=\bar{A}\bar{B}\);
\(\overline{(A^T)}=\bar{A}^T \)。
方阵的幂运算
类似于多个相同的数相乘可以写成幂的形式,多个相同方阵的乘积也可以写成幂的形式。
定义 2.2.18.
设\(A\)是一个方阵,定义方阵的幂:
\begin{equation*}
A^2 \triangleq A\times A,
\end{equation*}
\begin{equation*}
A^3 \triangleq A\times A\times A,
\end{equation*}
\begin{equation*}
\vdots
\end{equation*}
\begin{equation*}
A^r\triangleq A^{r-1}\times A=\underbrace{A\times A\times\cdots\times A}_{r}.
\end{equation*}
我们来看几个例子。
例 2.2.19.
来看更一般的结论。
例 2.2.20.
一般的,设\(A =\begin{pmatrix}
0 & {\color{red}1} & 0 & \cdots & 0\\
0 & 0 & {\color{red}1} & \ddots &\vdots\\
\vdots &\ddots & \ddots & {\color{red}\ddots} & 0\\
0 & \cdots & 0 & 0 & {\color{red}1}\\
0 & 0 & \cdots & 0 & 0
\end{pmatrix}_n\),求\(A^k\)。
上例中的矩阵也是很重要的一种矩阵,请同学们理解这个矩阵在乘法中起到的作用。
例 2.2.21.
设
\begin{equation*}
A= \begin{pmatrix}
\lambda & 1 & 0\\
0 & \lambda & 1\\
0 & 0 &\lambda
\end{pmatrix},
\end{equation*}
求 \(A^n\)。
本节的最后我们来看一个特殊的例子。
例 2.2.22.
设
\begin{equation*}
A= \begin{pmatrix}
1 & -1 & 3\\
-1 & 1 & -3\\
2 & -2 & 6
\end{pmatrix},
\end{equation*}
求 \(A^{2024}\)。
子节 2.2.5 矩阵应用举例*
矩阵作为一个2维数表,在很多实际问题中都是一种常用的数据格式。特别的,在计算机图形学中,一个数字黑白图像的存储方式就是存为一个矩阵。
对于一个只含有0和1的矩阵,把矩阵中的0对应于一个纯白色块,1对应于一个纯黑色块,然后把这些色块按照其在矩阵中的位置连续拼接起来,就可以获得一张黑白图片。这种图片通常被称为二值图。
色块形状的可以有很多选择,通常选择为正方形。Sage中提供了命令matrix_plot()就是按照这种方式将矩阵转化为图像。当以0,1矩阵为输入时,此命令可以输出相应的二值图,如下例所示。
黑白图像中另一种有代表性的图像是灰度图,也称灰阶图。灰度图也是由纯色色块拼接成的图像,这些纯色的色块通常也被称为像素。 与二值图不同的是:灰阶图中除纯黑和纯白两种颜色的像素外,还有很多介于这两种颜色之间的颜色,统称为灰色。最常用的灰度图在计算机上存储时,通常用0到255这256个整数表示色块的颜色,其中0代表纯黑,255代表纯白,越接近0的数字代表的颜色越黑,越接近255代表的颜色越白。表示颜色的数字通常也被称为所表示颜色的灰度。
我们来看一个具体的例子: 下载
图 2.2.24中的图片,查看其属性可知这张图片的尺寸为
\(165\times 220\),也就是说这张图片是由
\(165\times 220\)个像素点构成的。
图 2.2.24. 刘徽(约225年—约295年),汉族,山东滨州邹平市人,魏晋期间伟大的数学家,中国古典数学理论的奠基人之一。在中国数学史上作出了极大的贡献,他的杰作《九章算术注》是宝贵的数学遗产。我们可以用下面的程序片段把这张黑白图片转化为矩阵。转化过程中需要使用Python中的一些基础库和模块。将图片转化为矩阵以及之后的运算会使用的计算资源和传输数据量均较大,使用云服务器计算要等待很长时间,因此建议把下面的程序片段拷贝到本地安装的Sage中,并修改相应的本地存储图片路径,再运行相关代码。
为了简单,我们仍可以使用matrix_plot()命令来把矩阵转化为图片。注意到matrix_plot()命令中数字越小颜色越白,数字越大颜色越黑,这刚好和灰度图像中的颜色对应关系刚好相反,因此我们需要先做如下一个操作,然后即可用matrix_plot()将矩阵转化为图像。