首页 > theory > math > > 正文

透析矩阵,由浅入深娓娓道来—高数-线性代数-矩阵

发布人:zhoulujun    点击:

矩阵的一些数学知识相信大家已经忘记的差不多了,何况在学习的时候可能都是懵懵懂懂,这里抽丝剥茧讲透矩阵。

线性代数在科学领域有很多应用的场景,如下:

transformuse-the-scene.jpeg

矩阵,是线性代数中涉及的内容,

20170928204805587192568.png

线性代数是用来描述状态和变化的,而矩阵是存储状态和变化的信息的媒介,可以分为状态(静态)和变化(动态)信息来看待。

描述一个事物的状态需要在一个选好的坐标系(什么样的向量空间)中进行,所以矩阵所包含的信息从来都是成对出现(坐标值和坐标系)。而基就是坐标系的信息,可以将其拆分出来。

当把矩阵以动态信息来看待时,其信息的侧重点在于变化二字。这时的矩阵可以看做是一个方程。

通过矩阵内所描述的变化规则从一个状态变换到另一个状态。变换可以理解为事物本身的变化,也可以理解为坐标系的变化。


矩阵的本质:

探讨矩阵的本质的话,可以先看这篇文章:

理解矩阵(最通俗易懂的教程——高数-线性代数-矩阵

其思路概括来说如下:

  • 首先要有空间的概念,如果不考虑严谨的定义,你可以用我们熟知的二维或者三维空间来想象:里面有无穷多的点,通过某些动作,可以从一个点“移动”到另一个点,容纳运动是空间的本质特征。

  • 线性空间也是一种空间,线性空间是容纳向量对象运动的。如果选定了坐标系,那么一个向量可以用它在每个维度上的坐标值来表示,比如二维空间里可以表示为[x, y],三维空间可以表示为[x, y, z],更高维虽然无法想象,但仍然可以用类似的数学方式表示出来。

  • 向量共有两种形式,一种为列向量,一种为行向量。虽然我们可能比较习惯行向量,但在这里,我们默认使用列向量。比如[-1,2]就这样表示:


  • 我们可以通过某种运算,把空间里的一个点“移动”另一个位置。比如我们想把[-1,2]移动到[5,2],可以执行如下运算:


  • 上图中左边的这个变量,就是一个矩阵,所以矩阵是线性空间中运动(变换)的描述。

换言之,矩阵的乘法,本质是一种运动。但除此以外,还有另外一种理解方式。

我们知道,运动是相对的,把[-1,2]变成[5,2],除了“移动”,还可以通过变换坐标系的方式实现。也就是说,找到这样的一个坐标系,在那里,同样的一个向量可以表示为[5,2]。

在这个情况下,对上面那个矩阵相乘例子而言,里面的那个2x2方阵就可以理解为一个坐标系,在这个坐标系下,[-1,2]这个向量可以表示为[5,2]。

34.gif


比如上面这个动图中,通过坐标系变化,把红色向量[0,1]、绿色向量[1,0]变成了[3,0]和[1,-2]。

因此,矩阵的实质就是将坐标整体线性变换



矩阵的基本定义:

  • 矩阵:有m*n个数排成m行n列的数表成为m行n列矩阵,简称m x n矩阵,记为A。

  • 负矩阵:-A称为矩阵A的负矩阵

  • 行矩阵:只有一行的矩阵称为行矩阵,又称为行向量;A=(a1 a2 ...an) 

  • 列矩阵:只有一列的矩阵称为列矩阵,又称为列向量;

  • 同型矩阵:两个矩阵行数列数均相等,称他们为同型矩阵;

  • 相等:  若两个矩阵是同型矩阵,且它们的对应元素相等,成这两个矩阵相等。

  • 零矩阵:元素都是零的矩阵。注意:不同型的零矩阵是不同的。

  • 系数矩阵:线性方程组的系数构成的矩阵称为系数矩阵。

  • 方阵:当矩阵的行数与列数相等的时候,称之为方阵

  • 奇异矩阵:对应的行列式等于0的方阵。即当|A| = 0时。

  • 非奇异矩阵:对应的行列式不等于0的方阵。即|A|≠0时。

  • 数量矩阵:如果一个矩阵的对角线元素全部相同,其余元素都是0,这个矩阵叫数量矩阵,又叫纯量矩阵。

  • 对角矩阵:简称对角阵(默认为正对角阵)。是一个主对角线之外的元素皆为 0 的矩阵。对角线上元素可以为 0 或其它值。记为 A = diag(λ1,λ2,..,λn)  ; 分为正对角阵和反对角阵。


20170928203618130742890.jpeg

  • 对称矩阵:是元素以主对角线为对称轴对应相等的矩阵对阵矩阵定义为:A=AT(A的转置),对称矩阵的元素A(i,j)=A(j,i).

  • 反对称矩阵:反对称矩阵(又称斜对称矩阵)定义是:A= - AT(A的转置前加负号) 它的第Ⅰ行和第Ⅰ列各数绝对值 相等,符号相反,于是,对于对角线元素,A(i,i)=-A(i,i),有2A(i,i)=0

     Screen Shot 2017-09-28 at 19.43.36.png

  • 单位矩阵:主对角线上的元素为1,其它元素为0的矩阵。用E表示

    例如一个 3 × 3的矩阵:

    单位矩阵

    别的矩阵和单位矩阵相乘,得到的结果就是其自身:A × I = A

  • 行列式行列式(Determinant)是数学中的一个函数,将一个n×n的矩阵A映射到一个标量,记作 det(A)或 |A|。行列式可以看做是有向面积或体积的概念在一般的欧几里得空间中的推广。

    在任意的一个方阵都存在这样的一个标量,称作该方阵的行列式.

    41.jpeg


    20170928191311778895029.jpeg


  • 余子式:代数余子式是这样定义的,对于一个方阵M,给定行、列元素的代数余子式等于对应的余子式的有符号的行列式

    我们把上面的这句定义给提炼一下,某个矩阵的代数余子式是行列式,那么我们已经注意到了,某个矩阵的余子式是一个矩阵.这样我们就知道两者的不同之处了,一个是标量,一个是矩阵,这就是两者的不同之处.好了,了解完两者的不同之处之后,我们来看代数余子式的计算方法是怎么定义的,如下所示.


    只有上面的公式让我们感到很无助不是,那么接下来我们用一个接着余子式的示例来求解对应的代数余子式.如下所示

    20170928191923970199077.jpeg

    那么说了这么多余子式和代数余子式的知识,到底对我们的行列式的求解有什么帮助呢?其实,我们是可以利用余子式和代数余子式直接计算任意n维方阵的行列式,首先,我们找到矩阵的任意一行i(i不大于最大行数),然后,列数j依次增加.具体的计算公式如下所示.

    那么有了公式之后避免不了就是验证,接下来我们就用公式来推导4x4方阵的行列式.由于有了计算公式的便利,我们计算起来就比较方便了,但是我们要仔细判断每一个项的正负(自己验证的时候没注意,验证出错两三遍).这里,我选择的i =1(自己验证的时候可自行选择i) ,具体的验证过程如下所示.(由于其中的项过多,所以分两步截图.)

    20170928191923369128990.jpeg

    20170928191923139080047.jpeg


    通过上面我们发现,行数列数越多的方阵行列式的复杂度就会越高.复杂度会呈指数增长.我们计算到4x4的就已经非常的麻烦了(其实4x4的行列式我们已经够用了),那么要是在来个10x10的方阵行列式,我们岂不要疯掉?这里,书中提到了一种行列式的计算方式叫做"主元选择"的计算方式,感兴趣的小伙伴可自行查询资料.

    上面我们已经说完了行列式,但是说了一大堆,我们还是懵圈的,那么行列式是用来干什么的呢?或者说是行列式代表着什么意义呢?其实,在2D中行列式代表着以基向量为两边的平行四边形的有符号面积.在3D环境中则代表着以基向量为三边的平行六面体有符号体积.我们看以下示例来验证我们的想法.

    20170928192640574823977.jpeg

    如图所示,在2D环境中有基向量v = [3 0] ,u = [1 2].那么它的面积是3x2 = 6,它的行列式是3x2-1x0 = 6,我们发现行列式是和面积相等的(当然了,如果基向量v = [-3 0] ,行列式最终计算出来的值为-6)

    接下来,我们看一下在3D环境中的有三个基向量u = [2 0 0],v = [1 2 0],w= [0 0 1],如图所示

    20170928192640847251211.jpeg

    然后我们计算由上面三个基向量所围成的正六面体的体积为1x2x2 = 4,计算的三个基向量所组成的矩阵的行列式.发现两者的绝对值是相等的.如下所示.

    20170928192640733871745.jpeg

  • 伴随矩阵:矩阵A的伴随矩阵就是其余子矩阵的转置矩阵,记做:



    用伴随矩阵求逆矩阵

    20170928200749427330374.png

    这个是我自己想飞算法:

    math.png

  • 逆矩阵:设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E。则我们称B是A的逆矩阵,而A则被称为可逆矩阵。记作: A-1

    A × A-1 = I

    那么我该如何计算方阵M的逆呢?在我看的3D图形上是给出了如下的方法.

    在上面的公式中矩阵的行列式我们知道如何求解,那么adj M是什么鬼?adj M叫做矩阵M的伴随矩阵,定义为矩阵M的代数余子式矩阵的转置矩阵(挺绕口).没事,我们看一下示例是如何解释的这个的.假设矩阵M如下所示.

    矩阵A的|A|的行列式还可以如此计算:


    Screen Shot 2017-09-28 at 20.13.49.png


  • 拉普拉斯展开

    在数学中,拉普拉斯展开(或称拉普拉斯公式)是一个关于行列式的展开式。将一个n×n矩阵B的行列式进行拉普拉斯展开,即是将其表示成关于矩阵B的某一行(或某一列)的n个元素的(n-1)×(n-1)余子式的和。行列式的拉普拉斯展开一般被简称为行列式按某一行(或按某一列)的展开。由于矩阵B有n行n列,它的拉普拉斯展开一共有2n种。拉普拉斯展开的推广称为拉普拉斯定理,是将一行的元素推广为关于k行的一切子式。它们的每一项和对应的代数余子式的乘积之和仍然是B的行列式。研究一些特定的展开可以减少对于矩阵B之行列式的计算,拉普拉斯公式也常用于一些抽象的推导中。

    Screen Shot 2017-11-03 at 17.22.07.png

  • 转置矩阵

    转置矩阵其实是原来矩阵的行变成了新矩阵的列,以一个90°的角度进行了旋转。下面两个图就是矩阵A和它的转置矩阵AT

    Screen Shot 2017-09-28 at 18.19.00.png

    1396375-aaedf975aeb7453e.jpeg

    37.png

    矩阵转置的推理

           将一个矩阵转置之后,再次转置一次,便会得到原来的矩阵.

            对于任意的对角矩阵D,都有转置矩阵DT=D,包括单位矩阵I也是如此.

    正交矩阵:


    先来看一下正交矩阵是如何定义的,若方阵M是正交的,则当且仅当M与他的转置矩阵M^T的乘积等于单位矩阵,那么就称矩阵M为正交矩阵.

    MTM=I

    在矩阵的逆中我们知道,矩阵的逆和矩阵的乘积为单位矩阵I,由此推理,我们可以知道,如果该矩阵为正交矩阵,那么矩阵的逆和转置矩阵是相等的.

    MT=M-1

    那么正交矩阵存在的意义是什么呢?其实如果一个矩阵是正交矩阵,那么矩阵的逆和转置矩阵是相等的.转置矩阵是非常简单计算的,而计算矩阵的逆如果使用代数余子式计算是非常的麻烦,所以我们可以直接计算转置矩阵然后直接得到该矩阵的逆.


矩阵的运算:


  • 加法运算:

    1.png

    例如:


    颜色相同的方框数字进行相加,例如这里: 8 + 3 = 11,6 + 10 = 16

  • 减法运算:

    需要注意的是,进行加减运算的两个矩阵维度必须是相同的。

    矩阵乘以标量

    4.png

    类似,矩阵除以标量不再赘述

  • 矩阵相乘

    6.png



    5.gif

    需要注意的是:

    1.左边矩阵的列数,要和右边矩阵的行数相同。

    2.相乘的位置不能互换.A × B ≠ B × A

    3.相乘的次序不影响结果( A × B ) × C = A × ( B × C )

矩阵的本质就是线性方程式,两者是一一对应关系。如果从线性方程式的角度,理解矩阵乘法就毫无难度。

下面是一组线性方程式。

20170928183407233474570.png

矩阵的最初目的,只是为线性方程组提供一个简写形式。

20170928183407832046702.png

老实说,从上面这种写法,已经能看出矩阵乘法的规则了:系数矩阵第一行的2和1,各自与 x 和 y 的乘积之和,等于3。不过,这不算严格的证明,只是线性方程式转为矩阵的书写规则。

下面才是严格的证明。有三组未知数 x、y 和 t,其中 x 和 y 的关系如下。

20170928183407888095426.png

x 和 t 的关系如下。

20170928183407859317254.png

有了这两组方程式,就可以求 y 和 t 的关系。从矩阵来看,很显然,只要把第二个矩阵代入第一个矩阵即可。

20170928183407595060173.png

从方程式来看,也可以把第二个方程组代入第一个方程组。


20170928183653225200012.png

上面的方程组可以整理成下面的形式。

20170928183653162875418.png

最后那个矩阵等式,与前面的矩阵等式一对照,就会得到下面的关系。

20170928183653742042817.png

矩阵乘法的计算规则,从而得到证明。



矩阵相乘的应用:

先看一个例子:

某公司有四个工厂生产三种产品,已知每种产品的产量,利润和占地空间,因为工厂设在不同的地方,所以老板想调整一下各个工厂的产品输出,所以你告诉老板每个工厂的现有利润和占地空间。

产量:吨

工厂\产品P1p2p3
524
382
604
016

利润:万元  空间:平方米

产品利润空间
P124
P213
P332

一般求解是这样的:产量利润=总利润,产量空间=总空间

所以就是那12个结果,都会算

如果用矩阵来表示呢

9.png

直接拿(产量)*(利润,空间)就能直观的看到结果了。

这里是矩阵乘法的简单应用。



4X4齐次矩阵

两条平行线会相交吗?

在没有认识到齐次空间之前,我们知道两条平行线是不能相交的,但是两条平行线真的不能相交吗?我们看下面这幅图,我们都知道两条铁轨是平行的,但是这两条平行的铁轨在无穷远处会相交于一点.这对吗?在笛卡尔2D坐标系中, 我们用 (x, y) 表示笛卡尔空间中的一个 2D 点,而处于无限远处的点 (∞,∞) 在笛卡尔空间里是没有意义的。所以我们是无法解释这种现象的,但是在齐次空间中,我们可以解释这种现象.

带着上面的两个问题,我们开始我们的齐次坐标之旅.其实齐次空间的出现主要是用于投影问题的解决.所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示. 4D齐次空间有4个分量分别是(x,y,z,w),第四个是w,称为齐次坐标.那么在3D笛卡尔坐标系中可以使用其次坐标表示为(x/w,y/w,z/w).


那么我们就解决第一个问题,解释两条平行线投射到一个2D平面中相交于一点.我们知道在2D笛卡尔坐标系中用Ax+By+C= 0表示一条直线.两条平行直线相交的话,要关联两个方程式.如下所示.



在笛卡尔坐标系中,上述的两者如果相交,那么C=D=0,也就是两者是同一条过原点的直线.显然是解释不了两条平行线相交于一点的.如果我们引入齐次坐标的概念的话,我们把x/w, y/w 代替 x, y 放到投影空间里,如下所示.


上面的方程式组可以转换为下面的方程式组.

在C≠D的情况下,那么对方程组求解,就是w = 0两条直线相交,那么就是(x,y,0).两条直线相交于无限远处.


那么引进齐次坐标有什么必要,它有什么优点呢?

1.它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法.

2.它可以表示无穷远的点。n+1维的齐次坐标中如果h=0,实际上就表示了n维空间的一个无穷远点。对于齐次坐标[a,b,h],保持a,b不变, 点沿直线 ax+by=0 逐渐走向无穷远处的过程.


矩阵的几何解释

与其说矩阵的几何意义这么生涩难懂,不如说的是矩阵在几何中到底是有什么作用呢?一般来说,方阵可以描述任意的线性变换.,也就说,在几何当中,我们用矩阵表示几何体的空间变换.比如我们在程序中常用的平移、旋转、缩放等等.(没事,这时候说的可能很生涩,看到最后你就会明白怎么回事的)


为了更好的理解矩阵的几何意义,我们先用一个简单的示例来说明一下.如果我们把一张图片放入一个2D的坐标系中(为了给下面做铺垫,向量形式为[x,y,0]),并且规定它的大小为边长为1的正方形.向量p = [0,1,0],向量q = [1,0,0].如下图所示.

现在我们就单独的看图片的右上顶点 [1,1,0] (可看做向量).


首先我们先把[1,1,0]这个向量拆分一下.如下所示.

紧接着.我们要定义一下,p,q和r定义为指向 +x,+y,+z方面的单位向量.然后用单位向量表示图片的右上顶点 [1,1,0] .如下所示.

现在,向量[1,1,0]就被表示成p,q和r的线性变换了.向量p,q和r被称为基向量.这里的基向量是笛卡尔坐标系.但是事实上,一个坐标系能用任意的3个基向量表示.当然了,这三个向量不在同一个平面.向量p,q和r创建一个3x3的矩阵M.如下所示.

当然了,矩阵M可不单单只有上面的一种形式,上面的只能算是一种形式,记住我们说过的,一个坐标系能用任意的3个基向量表示.接下来,我们再次研究一个向量和一个矩阵相乘.(图形变换的开始部分),先看一下公式.

我们还是要借助一开始栋哥的那个坐标系图形.如果矩阵M如下所示.那么图形将不会发生任何变换.



接下来,我们就搞起图形变换了.如果矩阵M发生了如下改变,那么图形会有什么样的变化呢?

在矩阵M中.向量p从[1 0 0]变换到[2 1 0],q从[0 1 0]变换到[-1 2 0],r未发生变化.然后我们图形的右上点会再次发生缩放和旋转的变换.


得到效果图如下所示.

上面是2D中的变换,3D中的变化一样类似.例如现在有向量OB[1 1 1],如下图所示.


同时矩阵M如下所示.


结果变换之后,向量的图像如下所示.


平移矩阵

在3D图形:矩阵与线性变换我说过几种线性变换,比如旋转,缩放,镜像等等,唯独没有平移,但是在日常开发过程中,平移应该算的上我们很常用的一种仿射变换了.那么这是为什么呢?根据书上所说,矩阵的乘法性质所决定的,零向量总是变换成零向量,所以任何矩阵的乘法表达的变换是不会有平移的.但是我们却可以使用4X4平移矩阵表示3D环境中的平移变换,使用3X3平移矩阵表示2D环境中的平移变换.(假设w不变且w = 1)具体公式如下所示.



旋转矩阵

关于平面向量的逆时针旋转: 

已知任意一个向量OA=(x,y),把向量OA绕其起点O沿逆时针方向旋转α角得到向量OB=(xcosα-ysinα,xsiaα+ycosα)。推导如下:

20170928205627767154890.png

20170928205627856595825.png

可以反推导出旋转的矩阵:

3038868-a1715e0a9135e58e.png


缩放矩阵:

未完待续%…,等闲了点,再整理补充!



参考文章:

线代基本概念

机器学习笔记004 | 矩阵和向量,提升效率的数学工具

线性代数之矩阵理解

理解矩阵乘法理解矩阵乘法 

AI学习笔记:[0]什么是矩阵

3D图形:矩阵的相关知识

3D图形:矩阵的行列式,矩阵的逆、正交矩阵、齐次矩阵

高级动画学习心得笔记(五)变换


推荐阅读:

【通俗理解线性代数】 -- 矩阵与空间的基和坐标

【通俗理解线性代数】 -- 矩阵的相似对角化

矩阵

数组和矩阵

矩阵特征值分解与奇异值分解含义解析及应用

从矩阵与空间操作的关系理解CSS3的transform

线性代数导论11——矩阵空间、秩1矩阵和小世界图

如何直观理解矩阵和线性代数?

矩阵特征值分解与奇异值分解含义解析及应用


传送门:3D数学基础 图形与游戏开发.pdf