矩阵一一数学定义

在线性代数中,矩阵就是以行和列形式组织的矩形数字块。回忆前面曾将向量定义为一维数组,矩阵也能像那样定义为二维数组( "二维数组"中的"二"来自它们是行和列的事实,不要和 2D 向量或矩阵混淆)。向量是标量的数组,矩阵则是向量的数组.


矩阵的维度和记法

前面我们把向量的维度定义为它所包含的数的个数,与之类似,矩阵的维度被定义为它包含了多少行和多少列,一个 r x c 矩阵有 r 行, c 列。下而是 4X3 矩阵的例子:

用黑体大写字母表示矩阵,如: M , A , R . 需要引用矩阵的分量时,采用下标法,常使用对应的斜体小写字母:

mij 表示 M 的第 i 行 第 j 列元素.矩阵的下标从1开始,所以第一行和第一列都用数组1. 例如, m12(读作 m 一二,而不是m十二)是第 1 行,第 2 列的元素.


方阵

行数和列数相同的矩阵称作方阵.

方阵的对角线元素就是方阵中行号和列号相同的元素。例如,3X3 矩阵 M对角线元素为 m11 , m22 , m33。其他元素均为非对角线元素。简单地说,方阵的对角线元素就是方阵对角线上的元素。

如果所有非对角线元素都为 0. 那么称这种矩阵为对角矩阵,例如:

单位矩阵是种特殊的对角矩阵. n维单位矩阵记作 In , 是 nXn 矩阵,对角线元素为 1 ,其他元素为 0 。例如, 3X3 单位矩阵:

单位矩阵非常特殊,因为它是矩阵的乘法单位元.其基本性质是用任意一个矩阵乘以单位矩阵,都将得到原矩阵,所以,在某种意义上,单位矩阵对矩阵的作用就犹如 1 对于标量的作用.


向量作为矩阵使用

矩阵的行数和列数可以是任意正整数,当然也包括 1 ,我们己经见过一行或一列的矩阵了----向量.一个 n 维向量能被当作 1Xn 矩阵或 nX1 矩阵. 1Xn 矩阵称作行向量, nX1 矩阵称作列向量, 行向量平着写,列向量则竖着写,例如:

直到现在,这两种记法都是混合使用的, 其实,在几何意义上它们是一样的,绝大多数情况下它们的区别也不重要.但是,因为即将介绍的一些原因,混合使用向量和矩阵时,必须特别注意向量到底是行向量还是列向量.


转置

考虑一个 r X c 矩阵 M. M 的转置记作 MT , 是一个 c X r 矩阵,它的列由 M 的行组成.可以从另一方面理解, MTij = Mji ,即沿着矩阵的对角线翻折.

对于向量来说,转置将使行向量变成列向量,使列向量成为行向量:

  • 对于任意矩阵 M. (MT)T = M , 从另一方面来说,将一个矩阵转置后,再转置一次,便会得到原矩阵 这条法则对向量也适用.
  • 对于任意对角矩阵 D. 都有 DT = D ,包括单位矩阵 I 也如此.

标量和矩阵的乘法

矩阵 M 能和标量 k 相乘,结果是一个和 M 维数相同的矩阵.矩阵和标量相乘的记法如下所示,标量经常写在左边,不需要写乘号, 这种乘法法则很直观,即用 k 乘以 M 中的每个元素.


矩阵乘法

某些情况下,两个矩阵能够相乘.决定矩阵能否相乘以及怎样计算结果的法则初看起来有些奇怪.一个 r X n 矩阵 A 能够乘以一个 n X c 矩阵 B. 结果是个 r X c 矩阵,记作 AB.

例如,设 A 为 4X2 矩阵. B 为 2X5 矩阵,那么结果 AB 为 4X5 矩阵:

如果矩阵 A 的列数和 B 的行数不匹配,则乘法 AB 无意义.

矩阵乘法计算如下: 记 r X n 矩阵 An X c 矩阵 B 的积 r X c 矩阵 ABC . C 的任意元素 Cij 等于 A 的第 i 行向量与 B 的第 j 列向量的点乘结果. 正式定义为:

帮助记忆的法则:

  • 任意矩阵 M 乘以方阵 S , 不管从哪边乘,都将得到与原矩阵大小相同的矩阵.当然,前提是假定乘法有意义.如果 S 是单位矩阵,结果将是 原矩阵 M.即: MI=IM=M (这就是 I 被称为单位矩阵的缘故).
  • 矩阵乘法不满足交换律,即 AB != BA.
  • 矩阵乘法满足结合律,即 (AB)C=A(BC). (假设 A , B , C 的维数使其乘法有意义,要注意如果 (AB)C 有意义,那么 A(BC) 一定也有意义 .)矩阵乘法结合律可以扩展到多个矩阵的情况下,如:ABCDEF=((((AB) C)D)E)F=A((((BC)D)E)F)=(AB)(CD)(EF) , 注意所有括法都能计算出正确结果,但有些组中标量乘法更少.寻找使标量乘法最少的括法的问题称作短阵链问题.
  • 矩阵乘法也满足与标量或向量的结合律,即: (kA)B=k(AB)=A(kB) (vA)B=v(AB)
  • 矩阵积的转置相当于先转置矩阵然后以相反的顺序乘: (AB)T=BTAT . 这一结论可以扩展到多个矩阵的情形: (M1M2 ... Mn-1Mn)T =MnTMn-1T ... M2TM1T.

向量与矩阵的乘法

行向量左乘矩阵时, 结果是行向量;列向量右乘矩阵时,结果是列向量. 另外两种组合是不允许的,不能用行向量右乘矩阵,列向量左乘矩阵.

  • 结果向量中的每个元素都是原向量与矩阵中单独行或列的点积。
  • 矩阵中的个元素决定了输入向量中特定元素在输出向量中占的比重。如 m11 决定了输入 x 对输出 x 值的贡献.
  • 矩阵----向量乘法满足对向量加法的分配律. 对于向量 v , w 和矩阵 M. 有: (v+w)M=vM+wM

行向量与列向量

行向量左乘矩阵时,得到行向量:

列向量右乘矩阵得到的:

其各分量的值是完全不同的,这就是行向量和列向量区别如此重要的原因.

使用行向量的理由:

  • 在文字中使用行向量的形式更好一些。例如,行向量[1, 2, 3] 更适合在书本中书写.
  • 当讨论怎样用矩阵乘法实现坐标系转换时,向量左乘矩阵的形式更加方便. 采用这种方法,转换读起来就像句子一样易于理解,当转换多于一次时这尤为重要, 例如,用矩阵 A , B , C 转换向量 v ,用行向量记法记作 vABC. 注意,矩阵按转换顺序从左往右列出.如果使用列向量,矩阵放在左边,转换从右往左发生,这种情况下应记作 CBAv.
  • DirectX 使用的是行向量.

使用列向量的理由:

  • 等式中使用列向量形式更好.
  • 线性代数书中多使用列向量.
  • 多本计算机图形学"圣经"使用列向量.
  • OpenGL 使用列向量.

矩阵是怎样变换向量的

一般来说,任意向量 v 都能写为"扩展"形式:

另一种略有差别的形式为:

分别将 p , q , r 定义为指向 +x , +y 和 +z 方向的单位向量: v=xp+yq +zr

现在,向量 v 就被表示成向量 p , q , r 的线性变换了. 向量 p , q , r 称作基向量. 这里基向量是笛卡尔坐标轴,但事实上,一个坐标系能用任意 3 个基向量定义,当然这三个向量要线性无关(也就是不在同一平面上). 以 p , q , r 为行构建个 3X3 距阵 M.

用一个向量乘以该矩阵,得到:

如果把矩阵的行解释为坐标系的基向量,那么乘以该矩阵就相当于执行了一次坐标转换. 若有 aM = b ,我们就可以说, M 将 a 转换到 b .


矩阵的形式

基向量 [ 1 , 0 , 0 ] , [ 0 , 1 , 0 ] , [ 0 , 0 , 1 ] 乘以任意矩阵 M 时的情况:

矩阵的每一行都能解释为转换后的基向量.

  • 有了一种简单的方法来形象化解释矩阵所代表的变换.
  • 有了反向建立矩阵的可能----给出个期望的变换(如旋转、缩放),能够构造一个矩阵代表此变换.我们所要做的一切就是计算基向量的变换,然后将变换后的基向量填入矩阵.

实例:

这个矩阵代表的变换是什么? 首先,从矩阵中抽出基向量 pq :

p = [ 2 1]

q = [-1 2]

如图所示. x 基向量变换至上面的 p 向量 . y 基向量变换至 q 向量.所以 2D 中想象矩阵的方法就是想象由行向量构成的 "L" 形状。这个例子中,能够很清楚的看到, M 代表的部分变换是逆时针旋转 26° .


总结:

  • 方阵的行能被解释为坐标系的基向量.
  • 为了将向量从原坐标系变换到新坐标系,用它乘以一个矩阵.
  • 从原坐标系到这些基向量定义的新坐标系的变换时一种线性变换. 线性变换保持直线和平行线,但角度,长度,面积或体积可能会被改变.
  • 零向量乘以任何矩阵仍然得到零向量,因此,方阵所代表的线性变换的原点和原坐标系的原点一致。变换不包含原点.
  • 可以通过想象变换后的坐标系的基向量来想象矩阵. 这些基向量在 2D 中构成 "L" 型,在3D中构成"三角架"型.用一个盒子且辅助物更有助于理解.

只要你成为一个废物,就没人能利用你