2.1.1 什么是矩阵
“Matrix”这个单词是由英国数学家希尔维斯特(James Joseph Sylvester)于1848年率先使用的。英国数学家阿瑟·凯莱(Arthur Cayley,如图2-1-1所示)从1858年开始陆续发表了一系列关于矩阵的论文,包括矩阵的运算、逆、转置等,因此他被公认为矩阵理论的奠基者。当然,还有很多数学家对矩阵理论有贡献,如德国数学家弗罗贝尼乌斯(Ferdinand Georg Frobenius)对矩阵的特征方程、秩、正交矩阵、相似矩阵、合同矩阵等进行了研究。

图2-1-1
矩阵的概念进入我国,最早是1922年,当时的北京师范大学附属中学的数学教师程廷熙在有关文章中使用了“纵横阵”这个词汇作为英文“matrix”的汉译,此后还出现过“方阵”“长方阵”“矩阵式”等译法,1993年中国自然科学名词审定委员会公布的《数学名词》中,将“矩阵”定为正式译名。
到底什么是矩阵?下面是比较通俗且常见的定义。
定义 一般地,由个元素
按确定的位置排列成的矩形阵列,称为
矩阵(其中
是行的数目,
是列的数目)。
例如:

在本书中,使用大写粗斜体的英文字母表示矩阵,如上面的(在第1章中用小写粗斜体英文字母表示向量)。此处示例的矩阵
的行数是
,列数是
。
第1章中探讨过的向量,如,可视为
的矩阵;
可视为
的矩阵,也就是说向量也是一种形式的矩阵,换言之,矩阵中的每行或者每列则为向量。
为了更一般化地表述,矩阵:

可以简写为:或
。通常用小写英文字母表示矩阵中的元素,
称为矩阵的第
行第
列的元素。
如果矩阵的行数和列数相等,即,则称此矩阵为
阶方阵(或
级方阵)。

以上所显示的是矩阵的一般形式,如果把替换为具体的数字,就会出现一些特殊形态的矩阵,对这些特殊形态的矩阵,也分别给予了不同名称——形态特殊,还受到关注,必然有其特殊作用。例如:
● 单位矩阵
在向量空间中,我们引入了基的概念,以三维向量空间为例,它有这样一个标准基:,写成矩阵就是:
,这个矩阵就称为单位矩阵(Identity Matrix),通常用
或
表示,并且以下角标说明该向量空间的维数,如
,更一般化地表示为:

观察单位矩阵,会发现如下特点:
● 单位矩阵是方阵;
● 数字都在方阵的对角线;
● 除了对角线上的之外,其他位置的数字都是
;
● 将每一列(行)看作一个列(行)向量,各个列(行)向量线性无关;
● 单位矩阵的列(行)向量是相应维度的线性空间的一个标准基;
● 在欧几里得空间,每个列(行)向量的长度都是。
还可能有其他的发现,因为单位矩阵集中了很多特殊矩阵的特征,由此它也能生成一些其他矩阵,在2.1.2中介绍的初等变换就是以单位矩阵为基础的。
● 零矩阵
矩阵中所有元素都是,这样的矩阵称为零矩阵(Null Matrix,Zero Matrix),常用
表示,其中
为行数,
为列数。

这是一个的零矩阵。
● 对角矩阵
对于阶方阵
,位置索引值
的那些元素,构成了矩阵的主对角线(Main Diagonal),即
这些从左上角到右下角的元素。如果方阵中除主对角线的元素之外,其他元素都是
,如下所示:

这样的矩阵称为对角矩阵(Diagonal Matrix)。
● 对称矩阵
以主对角线为对称轴,两侧元素对称分布的对角矩阵,例如:

即,这样的矩阵称为对称矩阵(Symmetric Matrix)。注意,对称矩阵是方阵。
● 分块矩阵
我们可以把矩阵看作是一些数字按照一定顺序排列的,也可以看成是由列(行)向量组成的,如果按照后面的看法,矩阵其实就是按照下面的方式分块了:

若,则
。当然,这种分块方法似乎有点特殊,如果按照更一般的方式分块,可以为:

这样划分之后,矩阵可以写成
的分块矩阵(Block Matrix,Partitioned Matrix):

矩阵中的每个元素都是一个子矩阵(或者分块):

如果用Python语言来表示矩阵,可以使用NumPy的二维数组,例如:

另外,NumPy中还提供了专门的矩阵类。

注意:在NumPy中,二维数组和矩阵是两类不同的对象,不仅创建方法不同,在后续的内容中可以看到,它们在运算中所遵循的规则也不同。
如果要创建特殊矩阵,比如对角矩阵、单位矩阵等,则可以使用NumPy中提供的有关函数——注意返回的是数组对象,例如:

关于NumPy的更多内容以及各种矩阵的创建方法,请参阅《跟老齐学Python:数据分析》(电子工业出版社)。