目录
前言
【阅读时间】1小时左右 words 14069words
【内容简介】将只停留在数值运算和公式的线性代数推进到可视化几何直观(Visual Geometric Intuition)的领悟上,致敬3B1B的系列视频的笔记,动图也都来自于视频。内容涉及到基变换,叉积,逆矩阵,点积,特征向量与特征值。每一章节都有一句经典的名言,非常有启发性。
在笔记开始之前,想象学习一个事物(概念)的场景:我们需要学习正弦函数,sin(x),非常不幸的是,你遇到了一本相当装逼的教材,它告诉你,正弦函数是这样的:
的确很厉害的样子,并且,计算器就是这样算 sin(x),知道了这个的确“挺酷的”。对你来说,你的作业可能就是回家把代入到公式里面,发现,好神奇!竟然越算越接近0.5
。此时你对sin(x)与三角形之间的几何直观只有一些模糊的概念。这样的学习过程就十分悲催了。为什么呢?
再假设一个场景,接下来,物理课,正弦函数随处可见,下图场景中,其他人能快速的大概估计出这个值是0.7
。而刚“学过”正弦函数的你,内心戏可能是这样的:这些人忒diao了吧?你莫不是在玩我?
你可能会觉得这些做物理的人脑子也太强了,我弱爆了。其实,你需要只是一个几何直观的灌输而已,这也从侧面佐证了一个好的老师(这里的好老师真的不是他本身的学术能力有多强,而在于他擅不擅长站在学习者的角度不断的修正教学方法。甚至,模拟学生的学习过程提前预知所需要的基础概念)是有多么重要。
教学不同层次的人:初学,入门,掌握,理解,都是不同的。解释的角度,方式都完全不同。更加不幸的是,为了能更加通用的用理论来描述现实生活中的规律,人类已经做了很多工作,我们常说:越通用,越抽象(越难以理解)。这对于初学者来说堪称一段噩梦
这个例子比较极端,但只为强调一件事:直观理解很重要,或者说,学习方法很重要。好的学习方法即你如何直观的去理解(可能是几何的,或是现实中的具体例子)一个抽象的事物,并层次化的建立知识与知识间的联系,构建并健壮属于自己的知识图谱。个人观点是,这种【学习方法】是最高效的。它唯一的难度在于,需要一定的基础知识打底,一定的量变结合方法论(点拨或领悟)就是质变。换句话说,想躺着学习?不存在的
根据生物学家我们知道,人对具体的事物(动画>图形>数字>未建立直观理解的文字)更敏感,记忆速度更快。这篇笔记的对象3B1B团队生产的内容目的就是从为了帮助人们建立直观概念的角度来教学,在如今中国应试教育风行的大背景下,它会超越你的认知:学习如追番般期待,真不是一个调侃!
我是极度反对现代大学的线性代数课程中(甚至数学类课程)的教学方法的,在计算上(做题)花费了大量时间。而工程中,有计算机,绝不会有任何一个人去笔算矩阵的逆或特征值。如果现在的老师反驳:做计算的目的是为了让你通过大量的联系(重复)去记牢概念,我也一直坚信:学习知识的最快捷径是带有思考的重复,但那是带思考的重复,有一些直观的方法在帮助你理解和记忆上比做题有效率的多。
注解,因为这是一篇个人笔记,我个人已经深刻理解的内容,或者我觉得是很基本的内容我会略过或默认。好消息是,我自己也是一个理解力非常捉急的人,所以还是会比较详细的
什么是矩阵?矩阵 = 变换的数字表达(或者说:矩阵就是用数字形式来表达变换)
向量究竟是什么
引入一些数作为坐标是一种鲁莽的行为 ——赫尔曼·外尔
The introduction of numbers as coordinates is an act of violence - Hermann Weyl
这部分,讲向量,扎实的读者完全可以跳过
向量的定义 What
对于向量的这个概念,大家一定并不陌生,但是这次让我们从数学,物理,计算机三个角度来看待如何定义这个【向量】这个概念
物理专业角度
- 向量是空间中的箭头
- 决定一个向量的是:它的长度和它所指的方向
计算机专业角度
- 向量是有序的数字列表
- 向量不过是“列表”一个花哨的说法
- 向量的维度等于“列表”的长度
数学专业角度
从数学来说,它的本质就是通用和抽象,所以,数学家希望概括这两种观点
- 向量可以是任何东西,只需要保证:两个向量相加及数字与向量相乘是有意义的即可
- 向量加法和向量乘法贯穿线性代数始终,十分重要
可以通过上图直观的感受到数学家(这个很牛逼的灰色的)在想什么,有种【大道】的逼格。左边是物理角度,右边是计算机角度,但是很抱歉,我能用一些抽象的定义和约束让你们变成一个东西
坐标系
把向量至于坐标系中,坐标正负表示方向,原点为起点,可完美把两个不同的角度融合
- 向量加法
- 物理:首尾相连 Motion
- 计算机:坐标相加
- 向量乘法
- 物理:缩放 Scaling
- 计算机:坐标和比例相乘
线性组合、张成的空间与基
数学需要的不是天赋,而是少量的自由想象,但想象太过自由又会陷入疯狂 ——安古斯·罗杰斯
Mathematics requires a small dose, not of genius, but of an imaginative freedom which, in a larger dose, would be insanity - Angus K. Rodgers
本部分继续加深一个概念,为何向量加法与向量乘法是那么重要,并从始至终贯穿整个线性代数
线性组合
这个概念再好理解不过,空间中不共线的两个不为零向量都可以表示空间中的任意一个向量,(或者说:空间中的任意一个向量,都可以用[ [数] 乘 [向量] 的和 ]来表示。)写成符号语言就是:
至于为什么被称为“线性”,有一种几何直观:如果你固定其中一个标量,让另一个标量(数)自由变化,所产生的向量终点会描出一条直线
空间的基 Basis
对于我们常见的笛卡尔坐标系,有一个最直观一组基: ,即单位向量:和 ,通过 和 的拉伸与相加可以组成笛卡尔坐标系中的任意一个向量
张成的空间 Span
同理,举一反三的来说,我们可以选择不同的基向量,并且这些基向量构成的空间称为:张成的空间。张成二字比较拗口,可以类比为延展或扩展。直观来看,就是所有动图中的网格。笛卡尔坐标系就是一个由单位坐标张成的空间
所有可以表示为给定向量(基)线性组合(刚刚讲了这个概念)的向量的集合,被称为给定向量(基)张成的空间
如果你继续思考一下,会发现一个特点:并不是每一组给定向量都可以张成一个空间,若这两个向量共线(2D),共面(3D),它们就只能被限制在一个直线或面中,类似于“降维打击”。通过这个直观的思考可以引出一个概念:线性相关
线性相关
关于什么是线性相关,有两种表达
- 【表达一】你有多个向量,并且可以移除其中一个而不减小张成的空间(即2D共线或3D共面),我们称它们(这些向量)线性相关
- 【表达二】其中一个向量,可以表示为其他向量的线性组合,因为这个向量已经落在其他向量张成的空间之中
如果从统计学角度来说,这些向量之中有冗余。这一堆向量中,我们只需要其中几个(取决于维度)就可以表示其他所有的向量。
向量空间一组基的严格定义
有了这些对名次(概念)的直观理解,来看看数学家们是如何严谨的定义向量空间的一组基:
向量空间的一组基是张成该空间的一个线性无关向量集
用这样的步骤来慢慢导出这个定义,个人感觉,远比在课堂的第一分钟就将这句让你迷惑的话丢给你好的多,抽象的东西只有在慢慢推倒中你才能发现它的精巧之处,非常优雅且迷人
矩阵与线性变换
很遗憾,Matrix(矩阵)是什么是说不清的。你必须得自己亲眼看看 ——墨菲斯
Unfortunately, no one can be told what the Matrix is. You have to see it yourself -Morpheus
矩阵,最直观的理解当然是一个写成方阵的数字 ,这几节的核心是为了说明:矩阵其实就是一种向量变换(至于什么是变换下面会讲),并附带一种不用死记硬背的考虑矩阵向量乘法的方法
变换
【变换】本质上是【函数】(左)的一种花哨的说法,它接受输入内容,并输出对应结果,矩阵变换(右),同理,如下图
那既然两者意思相同,为何还要新发明一个词语装逼呢?其实不然,搞学术,不严谨就会出现纰漏。常说编程出现Bug,其实就是不严谨的一种体现,在写Code前,没有考虑到可能性的全集(虽然在一些大型程序中,考虑全集的做法有时候是没必要的,这是一对关于编程困难程度和不出的bug的博弈Trade-off),但是【变换】这个名词和不严谨其实没什么关系……
【变换】的表达方法暗示了我们可以用运动的方法来理解【向量的函数】这一概念,可以用可视化的方法来展现这组【变换】即输入-输出关系
这世界上有非常多优美的变换,如果你将他们编程,并可视化,就能得到下图
线性变换
我们说具有以下两个性质的就是线性变换(直观可视化如下图):
- 直线在变换后仍然保持为直线,不能有所弯曲
- 原点必须保持固定
一点扩展,如果保持保持直线但原点改变就称为:仿射变换(Affine Transformation)
一句话总结来说是:线性变换是“保持网格线平行且等距分布,并保持原点不动”的变换【重要】
如何用数值描述线性变换【核心】
这里需要使用上一节提到的工具,空间的基,也就是单位向量(基向量): 和
任何的线性变换,你都可以通过对基向量 和 的变换,再对变换后的基向量 和 进行线性组合()得到。换句话说,对于任何的线性变换,你只需要关注两个基向量 和 变换后的位置即可。
例如, 变换到 (3,1) 的位置, 变换到(1,2) 的位置,并把 变换后坐标立起来作为方阵的第一列(绿色表示), 变换后的坐标立起来作为方阵的第二列(红色表示)。
构成了一个矩阵:,假设我们想要知道目标向量(−1,2)进行变换后的位置,那么这个矩阵就是对变换过程最好的描述,一动图胜千言
Step1:绿色 ^ıı^ (x轴)进行移动(变换)
Step2:红色 ^ȷȷ^ (y轴)进行移动(变换)
Step3:目标向量x轴坐标值与 ^ıı^ 变换后向量进行向量乘法
Step4:目标向量y轴坐标值与 ^ȷȷ^ 变换后向量进行向量乘法
Step5:两者进行向量加法,得到线性变换结果
更加一般的情况,我们用变量来代替其中的具体值:绿色代表 变换后的向量,红色代表 变换后的向量
上面的公式就是我们常说的矩阵乘法公式,现在,不要强行背诵,结合可视化的直观动图,你一辈子都不会忘记的
【线性】的严格定义
在给出一个数学化抽象的解释前,先做一下总结:
- 【线性变换】是操纵空间的一种手段,它保持网格线平行且等距分布,并保持原点不动
- 【矩阵】是描述这种变换的一组数字,或者说一种描述线性变换的语言(或者说,矩阵就是变换后的基向量的一种表示方法)
在数学上,【线性】的严格定义如下述公式,这些性质,会在之后进行讨论,也可以在这里就进行一些思考,为什么说向量加法和向量乘法贯穿线性代数始终,毕竟是线性代数,很重要的名词就是线性二字(“可加性”和“成比例”)
“可加性”
“成比例”
矩阵乘法与线性变换复合
据我的经验,如果丢掉矩阵的话,那些涉及矩阵的证明可以缩短一半 ——埃米尔·阿廷
It is my experience that proofs involving matrices can be shortened by 50% if one throws the matrices out -Emil Artin
复合变换
如果对一个向量先进行一次旋转变换,再进行一次剪切变换( 保持不变第一列为(1,0), 移动到坐标(1,1)) ,如下图所示
那么如果通过旋转矩阵和剪切矩阵来求得这个符合矩阵呢?为了解决这个问题,我们定义这个过程叫做矩阵的乘法
矩阵乘法
在这里我们发现,矩阵乘法的变换顺序是从右往左读的(这一个常识很重要,你得明白这一点,有基本概念),进一步联系和思考发现,和复合函数的形式,如 f(g(x)) ,是一致的
那么如何求解矩阵乘法呢?对线性代数有印象的同学你们现在能马上记起来那个稍显复杂的公式吗?如果有些忘记了,那么,现在,就有一个一辈子也忘不了的直观解释方法:
M1
矩阵的第一列表示的是 变换的位置,先把它拿出来,M2
矩阵看成对这个变换过的 进行一次变换(按照同样的规则),就如上图所示。同理,针对 一样的操作过程,就可以得出这个表达式。这里我也不把它写出来了,按照这种思路,并且把上面的动图多看几遍,如果还能忘记,那就要去补一补基本的对几何图形的反应能力了(这也是一种能力,包括三维想象力,心算能力,都和记忆或肌肉一样,不锻炼,是不可能躺着被提高的)
另外两种常用来计算 矩阵乘法 的方法
我们这里只是在数值层面上面讨论这两种方法,当然这有悖于本篇文章的主题,毕竟我们通篇都是在讨论如何在几何层面理解矩阵和线性变换。所以我们这里也只是简单提及,并不做深入探究。
(1)矩阵乘法之行优先方法
这种行优先的计算矩阵乘法的方法,在下面介绍并使用消元法求解线性方程组的解的时候非常有用,也更容易理解。
(2)矩阵乘法之元素值计算方法
通过上面行优先方法计算矩阵乘法的结果可知:最终计算得到的矩阵A,那么A的第i行第j列的元素的值,就是M1矩阵的第j列与M2矩阵的第i行的乘积,如下:
这种方法一般也被我们用来验证矩阵乘法的计算结果是否正确。
计算规则证明
有了上面的想法,可以自己尝试证明一下,矩阵乘法的交换律是否成立?矩阵乘法的结合律呢?你会发现,原来这么直观,根本不需要动笔算(比如矩阵乘法的交换律,假设有一个向量vec(1.0, 0.0),对vec先放大X方向5倍,再旋转90度得到vec1(0.0, 5.0),而如果先旋转90度,再放大X方向5倍,则得到vec2(0.0, 1.0);很明显 vec1 != vec2)
三维空间
对三维空间内扩展的话,你会发现,显示生活中的每一种形态改变都能用一个 3*3
的矩阵来表示这个变换,这在机器人,自动化操作领域是非常重要的,因为你可以把现实生活很难描述的动作通过一个矩阵来表示,是一个连接数字和现实的重要桥梁和工具
n*n特殊矩阵(n阶方阵)
我们知道矩阵代表着一种线性变换,思考下面几个特殊n阶矩阵(这里只讨论n*n的方阵)是什么变换?
单位矩阵
在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的1,这种矩阵被称为单位矩阵(一般记为)。它是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1。除此以外全都为0。
我们对向量应用矩阵乘法左乘单位矩阵:
可以看出,向量在经过单位矩阵变换之后,仍然得到其本身,换句话说,向量在经过单位矩阵变换之后并没有发生变化,所以我们称单位矩阵 所代表的变换为“恒等变换”。
对角矩阵
对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为0的矩阵,常写为diag(a1,a2,...,an) 。对角矩阵可以认为是矩阵中最简单的一种,值得一提的是:对角线上的元素可以为 0 或其他值,对角线上元素相等的对角矩阵称为数量矩阵;对角线上元素全为1的对角矩阵称为单位矩阵。
单位矩阵:上面我们已经考虑了单位矩阵是对角矩阵的一种,其所代表的是一种“恒等变换”。
特殊的,对角矩阵中对角线上的元素全为0,所代表的零矩阵就是原点变换,它将任何向量都变换为0向量,也即任何向量变换之后都收缩到原点。
现在我们来考虑普通情况下的对角矩阵,也即对角线不全为1(单位矩阵),也不全为0(零矩阵) 矩阵:
可以看出,对角矩阵只不过将基向量各个方向拉伸为原来的k倍。例如上面所示对角矩阵,它将向量 在x方向拉伸2倍,在y 方向拉伸3倍,在z方向拉伸4倍。
特别的,再考虑另外一种对角矩阵,它是一个副对角线之外的元素皆为0的矩阵,如下:
上面 副对角矩阵 相当于把向量按照某一个方向翻转之后,再执行各个方向的拉伸;
上(下)三角矩阵
主对角线以下都是零的方阵称为上三角矩阵。
从几何意义上看,上三角矩阵也是代表着一种线性变换,如下:
尴尬,这里我也看不出是什么线性变换,不过我们自己可以在坐标系中画出变换前和变换后的向量,看看是经过了什么样的变换。
1*n行矩阵
本来我们只打算讨论n*n的n阶方阵,但是特殊的,我想在这里提一下1*n 行矩阵,它将在我们后面讨论【点积与投影】的时候会涉及到,提前在这里熟悉一下,了解行矩阵代表的线性变换,可能会有助于理解后面的内容。
比如,现在我们有一个行矩阵,我们来考虑一下行矩阵A代表了什么变换。前面我们知道矩阵的每一列都是一个基向量,因为矩阵A有3列 表明输入空间有3个基向量,也就是说输入空间是三维的;只有一行表明每一个基向量在变换后都只需用一个坐标来描述,所以他们一定都落在一维空间中。一维空间就是一条直线,或者更进一步说,是一条数轴。在经过行矩阵A的变换之后,3个基向量都落在了这条数轴上,并且每个基向量只需用一个数字就可以表示。
现在我们假设三维空间中的一个向量, 现在我们来考虑经过行矩阵A变换之后是什么样子的:
我们可以看到,向量在经过行矩阵A变换之后,变成数轴上的一个点了,点的数值(2x+3y+4z)就表示了变换之后点的位置。这不就是投影么?考虑一下,向量在该数轴上的投影,不正是行矩阵A变换之后的结果么!
如果还是不能理解行矩阵和投影之间的关系,别慌,继续往下看,在【点积与投影】章节,会有更详细的介绍。
行列式
计算的目的不在于数字本身,而在于洞察其背后的意义 ——理查德·汉明(没错,是发明汉明码的那个人)
The purpose of computation is insight, not numbers - Richard Hamming
行列式定义的由来
我们注意到,有一些变换在结果上拉伸了整个网格,有一些则是压缩了,那如何度量这种压缩和拉伸呢?或者换一种更容易思考的表达,某一块面积的缩放比例是多少?
其实,根据我们之前讲的基向量,我们只需要知道 和 组成的面积为1的正方形面积缩放了多少就代表所有的情况。因为线性变换有一个性质:网格线保持平行且等距分布
所以,这个特殊的缩放比例,即线性变换对面积产生改变的比例,就是行列式
特别的,我们可以发现,如果一个矩阵的行列式为0,意味着它把这个空间降维了,并且矩阵的列线性相关【划重点】
其中,正负表达的是方向,类似于纸的翻面。从数学来说, 起始状态在 的左侧,如果经过变换,变为在右侧,就添加负号。三维情况下,右手定位为正。
计算行列式
二阶矩阵行列式计算公式
为了连接行列式的计算公式和几何直观,我们现考虑 其中的 b
c
为0,那么,a表示 在 x轴 缩放比例,d表示 在 y轴
缩放比例,ad
表示拉伸倍数,同理来说,bc
表示的就是压缩倍数,两者的差就是缩放比例,用公式来表示就是:
如你还是对公式念念不忘,那么下面这张图可能可以帮到你
在这里,可以思考一下如何证明 det(M1M2)=det(M1)det(M2) ,你会发现太简单不过了
三阶矩阵行列式计算公式
很难记忆该公式?这里有一个比较直观的方法,行列式的值 det(A) =(上方向3条主对角线的元素的乘积 - 下方向3条副对角线元素的乘积),如下:
为了方便直观展示,我们将矩阵复制一份并放在原来矩阵的右侧,那么:
- 上方向3条主对角线的元素的乘积,就是上图中3条绿色线所代表的元素的乘积;
- 下方向3条副对角线的元素的乘积,就是上图中3条红色线所代表的元素的乘积;
- 那么矩阵的行列式的值,就是等于3条绿色线元素乘积的和,减去3条红色线元素乘积的和,也就是公式(1);
- 公式(2)展示的是基于公式(1),并将第1列的元素x,y,z抽离出来之后的结果,这个公式将在后面介绍叉积的时候会使用到。
对于公式(2),这里有个大胆的推测:
-
计算矩阵第 i 行第 j 列的元素的系数,就是去掉所在行和列的全部元素,剩余元素组成的二阶矩阵的对角线的积相减;
-
特别的,如果 i+j 的值为偶数的话,那么是(主对角线元素乘积 - 副对角线元素乘积);如果 i+j 为奇数的话,那么是(副对角线元素乘积 - 主对角线元素乘积)
-
比如,考虑矩阵中的x元素的系数,x为矩阵的第1行第1列的元素,也即 i+j=1+1=2为偶数,则系数就是,和上面公式(2)对比一下,刚好是x的系数;
-
再比如,考虑矩阵中的元素的系数,为矩阵的第3行第2列的元素,也即 i+j=3+2=5为奇数,则系数就是,读者可以自己验证一下;
-
在后面介绍叉积的时候,就可以利用这个推测很快求出x,y,z的系数,实际上,我们可以很快求得矩阵任意位置元素的系数。
注意,对角线法则只适用于二阶、三阶行列式,高阶行列式的计算需要结合排列的逆序数,这里不做展开。
特殊矩阵的行列式
了解了行列式在几何层面的意义之后,我们回过头来考虑一下上面提到过的n*n特殊矩阵的行列式吧,看看特殊矩阵的行列式计算是否有什么特殊之处?
我们这里只考虑上三角矩阵,因为对于上三角矩阵来说,单位矩阵只不过是将上三角矩阵主对角线元素全部置为1且主对角线以上的元素全置为0;而对角矩阵(只讨论主对角线的情况)也只不过是将上三角矩阵主对角线以上的元素全置为0;所以上三角矩阵有着更为一般的特点。
如果直接上结论的话,那么在数值意义上考虑,上三角矩阵具有行列式为主对角线元素相乘、上三角矩阵乘以系数后也是上三角矩阵、上三角矩阵间的加减法和乘法运算的结果仍是上三角矩阵等性质。
现在让我们从几何层面考虑“上三角矩阵具有行列式为主对角线元素相乘”。
(1)为了易于理解,我们从二维空间入手,我们知道2*2的二阶矩阵行列式所代表的就是二维空间中的面积,假设两个基向量分别为 和 , 如果在坐标系中画出这两个基向量,我们会看到其构成了一个平行四边形,这个平行四边形的面积等于底(的横坐标)乘以高(的纵坐标),那么二阶行列式的值就是:
(2)现在我们考虑一下三阶行列式的值,比如前面提到的上三角矩阵,三阶行列式的值代表的是三维空间中的体积,这里三个基向量分别为, 和。我们知道体积等于底面积乘以高,这里我们先考虑和,如果在坐标系中画出这两个基向量,我们会看到刚好都在x, y轴所构成的平面中,因为我们很明显可以看到在z轴方向的值为0。那么现在的问题就是要求在x, y所构成的平面中的面积(也即底面积),由于z=0, 我们可以直接忽略z,可以得到底面积就是行列式的值,而该行列式又恰好是我们在上面介绍的二维空间中的上三角矩阵,很明显行列式的值(底面积) = 1*4 ;
现在我们要考虑基向量了,在三维坐标系中画出向量,可以与和组成一个平行六面体,上面我们已经求得这个平行六面体的底面积 = 1*4,那么平行六面体的高呢?利用一下你的空间想象力, 在三维空间坐标系中,底面积在x,y轴所构成的平面中,那么平行六面体的高就恰好是向量在z轴方向的值()。推导到这里,我们可以很快得到它的体积,如下:
当然了,我肯定不会继续往下推导四阶,五阶......乃至N阶行列式的值,实际上,3阶以上的行列式要在几何层面上进行介绍就比较困难了,至少我个人在三维空间上还勉强可以想象,再往上就无能为力了。
我们回归最初的推论:“上三角矩阵具有行列式为主对角线元素相乘”,通过上面对二阶、三阶行列式在几何层面的介绍以及计算过程,我们可以很明显得到该结论,实际上该结论同样适用于更高阶的行列式的计算。
那么这里为什么要重点介绍这个推论呢?这个又要在数值层面上考虑问题了,毕竟几何和数值,只不过是描述问题的两个不同角度,相互之间的切换可以帮助我们更全面的看待问题。上面我们提到过,高阶矩阵行列式的计算需要涉及到排列的逆序数(参见其他线性代数的书籍,均会有介绍),然而这种计算方法复杂且容易出错(一般我们也是交给计算机来处理)。面对高阶矩阵行列式的计算,这里提供了一种方法:可以将高阶矩阵先通过行变换转换为上三角矩阵,之后通过简单的将主对角线上所有元素相乘,即可以得到该高阶矩阵行列式的值了。是不是很简单!
特别注意,“可以将高阶矩阵先通过行变换转换为上三角矩阵”这里提到的行变换,并不是说左乘行矩阵,实际上行矩阵代表着一种n维空间到一维空间的变换,是不同空间维度下的变换。而这里的行变换是指,通过左乘某个N阶方阵A来达到消除主对角线以下元素(或者说,将主对角线以下元素全部置为0,使待求高阶矩阵变为上三角矩阵)的目的,一般也称之为消元法。行变换除了可以帮助我们计算高阶矩阵行列式之外,另一个重要的应用场景就是用来求解线性方程组,我会在下面介绍到线性方程组的时候,再详细说明这一点。
再想想:
(1)如果在一个上三角矩阵中,我们将主对角线上的某一个或几个元素置为0,此时行列式的值为0,在几何层面上代表着什么呢 ?思考一下!没错,代表着空间降维了,同时也说明矩阵的列线性相关!
(2)如果是一个下三角矩阵呢,是否还满足行列式的值等于主对角线元素相乘 ?是的,同样满足,为什么呢 ?你能否从几何层面阐述一下。
(3)上面我们在提及对角矩阵的时候,特别说明了只讨论主对角线的情况。那么如果是副对角线的对角矩阵呢?它的行列式的值是什么?可以肯定的是绝对不会只是简单的将副对角线的元素相乘,思考一下?可以回头去看看副对角矩阵所代表的线性变换,是的,它可能会将向量翻转,而向量翻转会改变空间的定向,对应到行列式的变化就是,行列式的值可能为负。
(4)我们讨论矩阵的行列式,都是讨论n*n的N阶行列式,也即行数和列数相等的方阵。如果是m*n的矩阵呢,其行列式的值是多少?还是从几何层面来描述这个问题吧,我们知道行列式代表的是几何空间上的缩放比例,当我们在讨论缩放比例的时候,只有在同一维度下(比如二维,三维)讨论才有意义。而m*n矩阵,代表的是一种从n维空间到m维空间的变换,在不同维度下讨论缩放比例,是没有意义的,或者说,不同维度下不存在缩放比例这一说。显然,讨论m*n矩阵的行列式,没有意义!
逆矩阵、列空间与零空间
提出正确的问题比回答它更难 ——格奥尔格·康托尔
To ask the right question is harder than to answer it - Georg Cantor
首先,这一节并不涉及计算的方法,相关名词有:高斯消元法 Gaussian elimination、行阶梯形 Row echelon form。这里着眼的是对抽象的概念建立一个几何直观的理解,计算的任务就交给计算机去做
矩阵的用途
- 描述对空间的操作,
3*3
矩阵描述的三维变换 - 可以帮助我们求解线性方程组(Linear System of equation)
线性方程组
上图就是一个整理好的线性方程组,一般形式 ,其中 是待求向量。使用之前的几何直观来翻译个公式即, 经过 A 矩阵变换后,恰好落在 上,如下图
既然使用了 A 这个矩阵变换,那么之前讲解的概念:行列式应用在这里就很有意思了。根据之前提到的,行列式直观来说就是矩阵变换操作面积的缩放比例。我们可以思考,det(A)=0 意味着缩放比例为0,即降维了,很大可能找不到解,唯一的可能性,比如平面压缩成直线,而 恰好落在这个直线上才有解。这也是为什么计算行列式的值可以判断方程是否有解的几何直观
接下来思考如何求 。逆向思考,从 出发,进行某一个矩阵变换,恰好得到 。而这个反过来的矩阵变换,就称为 A 矩阵的逆矩阵,写成公式是:
逆矩阵
所谓逆,就是反过来的意思。根据基向量代表整个空间,已经变换过的 和 如何通过一个矩阵变换,变回 和 ,这个矩阵就是逆矩阵 ,写作 ,直观理解如下图
逆矩阵乘原矩阵等于恒等变换,写作 。 矩阵表示单位矩阵,即只有主对角线元素为1,其余为0(矩阵说对角线,默认为左上方到右下方)
消元法
上面考虑的是通过求矩阵A的逆矩阵,通过逆变换来求得向量。这里介绍另一种求解方法,还是对于上面的线性方程组,转换为矩阵向量乘法为:,其中:
矩阵消元法求解线性方程组的思想是,将矩阵A通过几次行变换,转换为上三角矩阵,利用上三角矩阵主对角线以下元素全为0的特点,我们可以很容易求解出向量。
第一步:我们要做的,就是消除主对角线以下的元素。首先考虑A矩阵的第2行第1列的元素4,我们发现将矩阵A的第2行减去第1行的2倍,刚好可以消除元素4,那么对应到变换矩阵就可以写为:
经过第一步变换,我们已经将元素4消除。是的,结论很漂亮!但是,如果在不知道M1矩阵的情况下呢?换句话说,我们如何才能得到上面消元使用到的变换矩阵M1呢?
有一个简单直观的方法:实际上变换矩阵M1的每一行都可以看做是对矩阵A的变换。比如,第 i 行第1列的元素 表示作用于矩阵A的第 1行,第 i 行第2列的元素表示作用于矩阵A的第2行......依次类推,矩阵M1的第 i 行各个列元素分别作用于矩阵A的对应行,作用的结果我们会得到目标矩阵A1的第 i 行,计算过程如下:
思考一下,对于目标矩阵A1的第1行,我们期望的结果是:不用修改直接保留下矩阵A的第1行并作为目标矩阵A1的第1行即可。所以对于变换矩阵M1,我们令它的第i=1行为,这样经过上面(2)的计算,可以得到A1的第1行就是。
同理,对于目标矩阵A1的第2行,我们期望的结果是:用矩阵A的第2行减去2倍矩阵A的第1行,也即,这样做完减法之后,我们就可以顺利消除矩阵A的元素4。所以对于变换矩阵M1,我们可以令它的第i=2行为,这样经过上面(2)的计算,可以得到A1的第2行就是。
最后,对于目标矩阵A1的第3行,我们期望的结果是:不作修改,直接保留下矩阵A的第3行并作为目标矩阵A1的第3行即可。所以对于变换矩阵M1,我们令它的第i=3行为,这样经过上面(2)的计算,可以得到A1的第3行就是。
依次组合三个变换行矩阵的值,我们就可以得到最终的变换矩阵M1了,结论就是上面(1)所列计算式子。当然了,当你熟悉这种方法之后,你大概可以看一眼就知道M1矩阵是什么样子,上面只不过是给首次接触的人一个提示,略显啰嗦。
接下来,我们就直接应用变换矩阵进行元素消元,而不再进行变换矩阵以及计算过程的解析了。
第二步:对于矩阵A1,我们需要继续消元,我们首先考虑消除 矩阵A1的第3行第1列的元素1,如下:
第三步:对于矩阵A2,继续消元,考虑到A2矩阵主对角线以下的非零元素只有第3行第2列的元素1,如下:
最终,我们得到矩阵A在依次经过M1->M2->M3矩阵变换之后的上三角矩阵A3。
第四步:别忘了向量同样也需要依次变换:
注意左乘矩阵的变换顺序是从右向左依次变换的。最终我们也得到了变换之后的向量 。
至此,经过消元法,我们得到了如下变换之后的矩阵A3和向量 :
第五步:重新组合成一个新的线性方程组:
我们可以很容易就求解出x,y,z 的值,不是么 ?只不过很不巧,这里的计算结果可能得不到整数x,y,z, 留给读者自己去计算。可以把结果和原来的方程组求解的结果进行对比,验证是否正确!
再想想:
(1)我们这里的上三角矩阵A3的主对角线不为0,这很好,说明行列式, 这说明方程组的解一定存在。思考一下,如果A3的主对角线的某一个或多个元素为0呢 ?此时,经过上面对行列式的学习,我们知道行列式为0,说明矩阵变换将空间压缩了,也即空间维度降低,从原来的三维空间变为二维空间也即一个平面(也可能是一维空间也即一条直线,或者更极端的,变为一个点,也即零空间),此时如果要存在变换,那么要恰好落在A3所构成的平面(或直线或点)中,这个时候方程组的解才存在,否则,方程组解不存在。
(2)是的,在下一节讨论列空间和零空间的时候,我们会再次考虑线性方程组解是否存在的情况。
列空间
其实这只是之前一直在提到过的概念,在线性方程组中,这么描述:所有可能的输出向量 构成的集合被称为A的列空间。这么说不太好理解,可以从名称“列空间”入手,矩阵的列是什么呢?我们之前已经多次强调了,就是 和 变换后的坐标。即矩阵的列表示基向量变换后的坐标(位置),变换后的向量张成的空间就是所有可能的输出向量
简单说即:列张成的空间 = 列空间,即矩阵的列所张成的空间,如下图。
检查一下自己是否完全理解,就思考下面句话为什么这么说:零向量一定在列空间中(列空间很好理解)
秩 Rank
秩这个概念相信很多学习线性代数的同学,因为中文字,秩,本身就不熟(和正则化有点类似),所以秩也就非常难以理解了。秩是秩序,联想为秩序的程度。但是,因为你已经看了这个教程,矩阵的秩在现在你拥有的几何直观下,理解起来,当真的小菜一碟
我们已经建立了一种深刻的认知:矩阵 = 变换,那么变换后空间的维度,就是这个矩阵的秩。更加精确的定义是:列空间的维数(如果你可以恍然大悟:原来这两句话是一个意思,那么我觉得你对矩阵的理解已经有了质的提高)
当秩达到最大值时,意味着秩与列数相等,我们称之为“满秩”。在下面介绍非方阵的时候,我们会了解到,矩阵的列数就是输入空间的维度,矩阵的行数就是输出空间的维度,从而我们知道,“满秩”所代表的意义就是:变换后空间的维度等于输入空间的维度。自然的,当变换后空间的维度小于输入空间的维度(列空间的维度),我们称这个矩阵为非满秩的矩阵。
因为线性变换必须保持原点位置不变,对一个满秩变换来说,唯一能在变换后落在原点的就是零向量自身。但是对于一个非满秩的矩阵来说,它将空间压缩到一个更低的维度,也就是说会有一系列向量在变换后成为零向量。
零空间
变换后落在原点的向量的集合,称为这个矩阵(再次强调矩阵 = 变换的数字表达)的零空间或核,如果感觉没理解,可以看看下图
【图1】二维压缩到一个直线(一维),有一条直线(一维)的点被压缩到原点
【图2】三维压缩到一个面(二维),有一条直线(一维)的点被压缩到原点
【图3】三维压缩到一条线(一维),有一整个平面(二维)的点被压缩到原点【注意】压缩就是变换,变换就是矩阵,其实说的就是矩阵
变换后一些向量落在零向量上,而“零空间”正是这些向量所构成的空间。对线性方程组来说,当向量正好为零向量时,零空间给出的就是这个向量方程组(齐次线性方程组)所有可能的解。
总结
- 从几何角度理解线性方程组的一个高水平概述;
- 每个方程组都有一个线性变换与之联系,当逆变换存在时,你就能用这个逆变换求解方程组;
- 不存在逆变换时,列空间的概念让我们清楚什么时候存在解(如下图所示);
- 零空间的概念有助于我们理解所有可能得解的集合是什么样的;
当变换矩阵A将空间压缩为一条直线时,任何的向量都无法通过A变换得到(此时方程组的解不存在), 除非恰好也落在这条直线上(此时方程组的解存在)。
非方阵
在这个小测试里,我让你们求一个2*3矩阵的行列式。让我感到非常可笑的是,你们当中竟然有人尝试去做 ——佚名
On this quiz, I asked you to find the determinant of a 2*3 matrix. Some of you, to my great amusement, actually tried to do this - no name listed
几何意义
首先从一个特例出发,考虑3×2
(3行2列)矩阵的几何意义,从列空间我们得知,第一列表示的是 变换后的位置(现在是一个有三个坐标的值,即三维),第二列同理是 。总结来说,3×2
矩阵的几何意义是将二维空间映射到三维空间上
此时从特例到一般化推倒,我们可以得到一个结论:n*m
的几何意义是将m维空间(输入空间)映射到n维空间(输出空间)上
注意这里的输入空间,输出空间的概念,阅读方向同样也是从右向左的(靠右的是输入,靠左的是输出)
非方阵乘法
如果你已经学过线性代数的大学课程,你可能有一些影响,并不是任意两个非方阵都可以进行矩阵乘法,必须满足一些条件,例如,M1M2(非方阵)计算中,假设 M2 为2×3
的矩阵,那么 M1的列必须等于 M2 的行,否则这个乘法是没法计算的。
当我们有了变换的几何直观后,这个概念只要自己思考推倒一次,也是一辈子都忘不了的
直观解释是:矩阵的行是这个变换的输出空间维数,而列是变换的输入空间维数。矩阵乘法从右向左读,第一个变换的 M2 的输出向量的维度( M2 的行)必须和第二个变换 M1 的输入向量( M1 的列)维度相等,才可以计算。也就是说,类似于插头和插座的关系,我只有三头插座,你来一个双头插头肯定没法用的
非方阵行列式
这里有一个很好玩的概念,非方阵的行列式呢?都不是一个维度的变换,如同归零者和咱们谈判一样,你和我谈缩放比例?不存在的
点积与对偶性
卡尔文:你知道吗,我觉数学不是一门科学,而是一种宗教
霍布斯:一种宗教?
卡尔文:是啊。这些公式就像奇迹一般。你取出两个数,把它们相加时,它们神奇地成为了一个全新的数!没人能说清这到底是怎么发生的。你要么完全相信,要么完全不信
什么是点积
两个相同维数的向量,或是两个相同长度的数组,求它们的点积,就是将相应坐标配对,求出每一对坐标的乘积,然后将结果相加,一动图胜千言
从几何层面上来说,这里直接上结论: 可以想象成向量 朝着过原点和向量 的直线上的正交(垂直)投影,然后把投影的长度和向量 的长度乘起来就是点积的值。其中正负号代表方向,两个向量成锐角,大于0;钝角,小于0(这里从几何层面回答了点积是什么——在上的投影长度和的长度的积)。如果暂时不能理解,继续往下看,后面会有详细介绍和证明过程。
点积的顺序
你可能会发现,顺序在线性代数其实是很重要的,而对于 和 它们的结果是相同,为什么呢?
解释的方法为:首先假设 和 长度相同,利用对称轴,两个向量互相的投影相等;接下来如果你缩放其中一个到原来的两倍,对称性被破坏,但是缩放比例没变,最终乘法的结果也没变,一动图胜千言
点积与投影
这个时候问题就来了,这种直观的乘法与加法的组合运算为何会和投影有关?又为何 向量点积等于(向量投影长度 * 向量长度)?这个问题非常有意思,因为回答这个问题的过程用到了十分精彩的直觉和思维方式
首先,需要建立多维空间到一维空间的线性变换(描述为1×n
的矩阵,列代表对应的基向量压缩到一维空间的位置),即函数(自变量对应多维空间,f(x) 最后的输出为一维空间,也就是数轴上的点,一个确定的数)的概念。一动图胜千言
你会发现,n×1
表示的是坐标,和1×n
表示的多维到一维的变换(矩阵)之间有某种联系,即将向量转化为数的线性变换 和这个向量本身有着某种关系。
接下来,我们想象一个情景,这个被压缩成的一条线(数轴)放置在一个坐标系(二维空间)中,且空间所有向量都经过一个变换被压缩到这个数轴上。记这个数轴的单位向量为 ,一动图胜千言
再然后,我们需要考虑的问题变为,坐标系中的 与 是如何被压缩到这条直线上的呢(基向量表征整个空间的变换)?即求一个1×2
的矩阵内的值,第一列表示 变换后的位置(在这条数轴上),第二列表示 变换后的位置。可以直接给出结论,这个变换的数值恰好就是 在这个坐标系中的坐标 ,推导方法使用到了对偶性,一动图胜千言
动图中的白色虚线就是对称轴,目的就是确定变换后 与 的位置,即描述变换的矩阵(再次重复,列表示坐标,行表示变换)。
对偶性在这里的体现就是,二维空间中的基向量和,经过在向量上的投影变换之后,获得的投影变换矩阵为, 是的,这个投影变换矩阵的和恰好就是向量的横坐标和纵坐标。换句话说,对偶性告诉我们,【重要】无论何时,当你看到一个多维空间到一维数轴的线性变换(比如)时,空间中都会存在一个向量(比如) 与之对应,并称这个向量为该变换的对偶向量。
推导完毕。(1)通过对偶性,我们把二维空间到一维空间的变换(投影变换) 与 一个对应向量联系起来。
而下面的动图,则通过计算层面的等价,把一个投影变换和点积联系起来。整个过程看起来就如下面动图所示:
(2)通过上图可以看到,一个向量 应用投影变换, 与向量和向量的点积,在计算上完全相同,也即:应用线性变换到某个向量 和 与这个向量点乘 等价。且恰好由压缩这一变换理念,与投影正好联系了起来,关键点在于,压缩变换 = 投影。这也就是为什么与单位向量(比如上图中的向量)的点积可以解读为,将向量投影到单位向量所在直线上所得到的投影长度(具体的证明过程也可以看下面介绍)。
点积与投影长度的联系
基于上面推导,我们可知,点积与投影变换相关。我们现在考虑第二个问题:为何 向量点积等于(向量在的投影长度 * 向量长度)?
考虑:或 作为被投影向量,
(1)当为单位向量(也即向量的长度为1,可以理解为就是上图中的):
以为准作一条数轴,数轴单位长度为向量的长度,数轴方向为的方向;
现在要投影在上,也即数轴上,由上面投影和向量的联系,可知向量在向量上投影,等价于对向量应用线性变换,如下:
现在是在一条数轴上,在上的投影就是数轴上的一个点,且点的数值()就是在上的投影长度;所以的值等于在上的投影长度。上面我们已经假设了为单位向量,也即的长度为1,所以:
(2)当不为单位向量,比如为3倍数轴单位长度(也即3倍向量长度),则令,由向量可以得到线性变换,可以理解为将原来数轴的单位长度由拉伸3倍得到,也即变换后的两个基向量拉伸为原来的3倍,为新的投影矩阵,则:
而我们知道,向量为向量拉伸3倍得到,所以向量的长度等于3倍向量的长度,那么上面公式可以进一步得到:
这也就是为什么向量与给定非单位向量的点积可以解读为,首先朝给定向量上投影,然后将投影的值与给定向量长度相乘。
综上(1)(2)可知,向量点积 等于(向量在上的投影长度 * 向量长度)。
线性变换和对偶向量【重要】
【重要】这里给你的启发是,你在任何时候看到一个线性变换,它的输出空间是一维数轴,无论它是如何定义的,空间中会存在唯一的向量与之相关【对偶向量】,就这一意义而言,应用变换和与向量做点积是一样的【是的,这部分我反复重复了这句话,说明我多么怕你因为漏掉这句话而额外耗费了很多时间理解其他与之相关的内容,或者说我多么希望你在深刻理解这句话之后才继续往下学习】。
再思考:
(1)由上面的推导过程,我们还可以知道,向量决定了在其上的投影长度的缩放比例,所以最终的值,不仅与和所形成的夹角大小有关(影响在上的投影长度),还与向量作用于在其上的投影长度的缩放比例有关,两者共同作用下最终得到的值。
(2)那么思考一下,当 的值分别为多少的时候,被投影向量表示一个既不拉伸也不收缩的投影变换 ?这里需要涉及到向量与X轴所形成的夹角以及 的值,以二维坐标系为例,尝试思考一下?可以参考上面对于坐标的计算,相信你能自己找到缩放比例和的联系!
对偶性
在证明的过程中,有一个很关键的点就是使用了对称轴(对称理念)。在数学中,对偶性定义为:两种数学事物之间自然而又出乎意料的对应关系。刚刚推倒的内容是数学上“对偶性”的一个实例:即无论何时你看到一个二维到一维的变换,空间中都会存在一个向量 与之相关。
总结
- 点积是理解投影的有力几何工具;
- 方便检验两个向量的指向是否相同;
- 更进一步,两个向量点乘,就是将其中一个向量转化为线性变换;
- 向量仿佛是一个特定变换的概念性记号。对一般人类来说,想象空间中的向量比想象这个空间移动到数轴上更加容易
叉积
每一个维度都很特别 ——杰弗里·拉加里亚斯
从他(格罗滕迪克)和他的作为中,我还学到了一点:不以高难度的证明为傲,因为难度高意味着我们还不理解。理想的情况是能够绘出一幅美景,而其中的证明显而易见
叉积定义
叉积是在三维情况下被定义出来的:通过两个三维向量( 与 )产生一个新的三维向量 。向量 具有如下性质:
- 向量 的长度 就是 和 组成平行四边形的面积 ;
- 向量的方向 与平行四边形(所在平面)垂直,并用右手定则确定方向,食指为 ,中指为 ,大拇指即 。
使用公式表示就是:
叉积计算公式
如果愿意记忆,下面有一个叉积的计算公式:
通常我们也可以借由 三个基向量,与和一起组成一个三阶矩阵,计算这个矩阵的行列式(可以复习上面矩阵行列式的计算规则):
三个基向量后的系数就是对应向量 的坐标值。
第一次学这个计算方法的时候,估计没几个人能想清楚它为什么是这样的形式,甚至老师也说不清,只是告诉学生,我们这么记下来,定义是这样的定义的。但是,既然是直观讲解,必须把这里的来由探明清楚
叉积在几何层面的推导过程
在开始前,先再次加深一次对偶性的概念:每当你看到一个多维空间到数轴(一维空间)的线性变换时,它都与多维空间中的唯一一个向量对应,这个向量就被称为这个变换的对偶向量。
恰好,叉积的运算过程给出了对偶性的一个绝佳实例。通过上面给出的叉积定义:两个三维向量 与 最终会产生一个新的三维向量 ,向量 就是我们要求的 和 的叉积。在几何直观上,这是从三维空间的一个平面(向量 与 所张成的平面)到数轴(向量可以看做是 和向量在同一直线的数轴 上的一个点)的线性变换,我们现在就是要找到这个线性变换。而这个线性变换是从多维空间到数轴的变换,根据对偶性我们可知,这个线性变换一定与多维空间中的唯一一个向量对应,这个与线性变换相对应的向量就称为这个线性变换的对偶向量,也即 和 的叉积。
【重要】我们要做的是定义一个从三维空间到数轴的特定线性变换,并且它是根据向量 和 来定义的,然后当我们将这个变换与三维空间中的对偶向量关联时,这个对偶向量就会是 和 的叉积。
下面就是我们的定义过程:
首先,我们知道三维情况下,求一个3×3
矩阵的行列式,就是求这三个向量张成的平行六面体的体积,然后,把第一列(向量)换成一个自变量,后两列(两向量)记为 和 ,那么我们就有:
这样形式的函数 f() ,这个函数的几何意义是,对于任一输入的向量(x,y,z),你都考虑由它和 和确定的平行六面体,得到它的体积,然后根据定向确定符号。
如下图所示,即平行六面体随白色向量 (x,y,z) 的随机游走而不断改变。然后,问题就变成了,我们需要根据 和 找到一个函数f(或者说,一个变换矩阵),它作用于向量(x,y,z)之后,使得上述等式成立(或者从几何直观上来看,我们需要找到一个线性变换,它作用于向量(x,y,z)之后,得到的结果是一个数值,并且这个数值等于平行六面体的体积)。
这个函数的一个至关重要的性质在于它是线性的,因为对于右边是行列式,其所代表的意义就是线性变换对空间(比如二维的面积或三维的体积)所产生的缩放比例。且因为右边行列式是一个数值(一维),而向量(x,y,z), , 都是三维空间中的向量,所以 f 是三维空间到一维数轴的线性变换(也即 代表这个变换的1×3
矩阵),利用对偶性(也即多维空间到一维空间的线性变换,在多维空间中都会存在唯一向量与之对应,这个向量就称为这个变换的对偶向量),我们可以找到一个向量。一动图胜千言:
对偶性:即应用线性变换到某个向量和与这个向量点乘等价,即我们可以把1×3
的变换(矩阵用来描述变换),立起来(转置),并写成点乘的形式,并把这个与变换对应的向量记为 (也称为这个变换的对偶向量)。
其中向量的颜色左右对应,并且行列式的值就是右图中平行四面体的体积,然后,我们就把问题进一步变成了:寻找向量使得与其他任一向量(x,y,z)的点积等于一个3×
3矩阵的行列式。
到这里,我们就可以推断 和 的叉积在几何层面上的意义了:它是一个向量,暂且记作,它满足,当任意一个未知向量(x,y,z)应用对偶向量对应的线性变换之后,会得到一个数值,并且这个数值等于未知向量(x,y,z), 和 一起张成的平行六面体的体积。(这里从几何层面回答了叉积是什么——它是一个代表特殊线性变换的对偶向量)
对于上图中的等式,等式左边为两个向量点积,根据点积的性质得知,把一个向量与其他向量点积的几何解释是:把其他向量投影到 上,然后将投影长度与 的长度相乘。
等式右边是一个行列式也即平行六面体的体积,而我们知道,对于一个平行六面体来说,体积等于底面积乘以高,且高与底面积垂直,所以,作为被投影对象的 必须与 和 构成的平面垂直(只有与 和 构成的平面垂直,才能满足对于任一向量(x,y,z),上图公式均成立;否则,对于任一向量(x,y,z),向量的方向或长度都会改变,即向量不唯一确定。比如考虑最简单的情况, 向量和 向量,可知和分别代表X方向和Y方向,相互垂直且面积为1,再假设任一向量为,该向量在Z方向的投影就是z分量的值1,明显我们构造了一个体积为1的平行六面体,该平行六面体的底面积(由和确定的面积)在X/Y平面,高为向量的z分量,也即向量在z方向的投影长度。这个时候考虑上图等式,如果不垂直于和,那么此时在上的投影长度假设为Len1,的长度为LenP1, 结果就是 Len1 * LenP1 = 1。现在我们改变向量为,可知此时构造的平行六面体的体积依然是1,但由于向量的方向改变了,其在上的投影长度也会变化(因为不垂直于和)假设为Len2,那么如果想让等式 Len2 * LenP1 = 1 依然成立,那么LenP1 就要变化,也即向量不唯一确定了。所以必须垂直于和构成的平面。),所以向量的方向已经找到。
至于长度,根据公式的形式:
体积 = 和 张成的底面积 * 高 = 行列式的值 向量 和 (x,y,z)向量点积 = 的长度 * (x,y,z) 向量在上的投影长度
通过上面动图可以观察到,其中 (x,y,z) 向量在上的投影长度就是平行六面体的高,而向量 的长度作为第一项,只有当长度等于平行四面体的底面积时,上述公式才能成立。
经过上面更进一步的推算,我们得出 和 的叉积 的第二层几何意义是:向量的长度(模)等于平行四面体的底面积(也即 和 所构成的平行四边形的面积),并且的方向垂直于该底面积。(这里在几何层面回答了叉积怎么样——即向量有何属性)
至此,又一次利用对偶性发现了一些事物之间自然而又出乎意料的对应关系。通过几何直观来了解计算公式的由来,也是一种加深印象,深刻理解的有效途径。
叉积在三维几何中的应用
在三维几何中,向量和向量的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于和向量构成的平面。
在3D图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于,的法向量,从而构建新的 X/Y/Z 坐标系,该坐标系三个基向量可以构成一个变换矩阵,利用该变换矩阵,我们能完成从原来坐标系到新坐标系的位置变换。更详细的介绍可以参考下面的基变换章节。
二维情况下的叉积类比
二维空间下 与 的叉积(添加z分量且等于0,将二维向量扩展成三维向量):
我们知道叉积的结果是一个向量,特殊的,二维空间下的叉积结果如上面等式所示,如果对取模,可以得到:
我们知道,在二维空间中的变换矩阵的行列式表示的是平行四边形的面积,也即二维空间下两个向量的叉积取模,结果就是这两个向量所形成的平行四边形的面积,这也从二维空间的角度证明了 "向量的长度(模)等于平行四面体的底面积(也即 和 所构成的平行四边形的面积)"这一几何意义。
结果方向的确定考虑 和 的相对位置关系,与其相同,为正;否则,为负。
通过这个定义,结合几何直观,我们可以发现几个有趣的结论:
- 越接近垂直的 与 构成的面积越大;
- 并且叉积的分配律成立;
- 在计算面积时,我们要经常用到叉积。
总结
在这里总结一下涉及到的过程,也可以通过阅读看看是否直观的理解每句话来判断掌握程度
- 首先定义了一个三维空间到数轴的线性变换(函数 f()),它是根据向量 和 来定义的
- 接着通过两种不同的方式来考虑这个变换的对偶向量
- 这种计算方法引导你在第一列中插入 ,然后计算行列式;
- 在几何直观上,这个对偶向量一定与 和 垂直,并且其长度与这两个向量张成的平行四边形的面积相同;
基变换
数学是一门赋予不同事物相同名称的艺术 ——昂利·庞加莱
Mathematics is the art of givinh the same name to different things -Henri Poincare
坐标系与基向量
坐标系指:发生在向量与一组数之间的任意转化,如果假设有一个向量,使用 和 来描述是 ,我们把这种描述称为:我们的语言。如果有另一组基向量, 和 (写成列向量的形式是为了形式上的统一)来描述同样一个向量变成 ,我们把这种语言记为:詹妮弗的语言
基变换
我们在之前的解释中已经说明了,在不同的【语言】之间的转化使用矩阵向量乘法,在上面的例子中,转移矩阵是 ,矩阵的列表示用我们的语言表达詹妮弗的基向量,称为基变换。
反过来,就是求转移矩阵的逆 ,称为基变换矩阵的逆,作用是可以表示从詹妮弗的基向量转换回我们的语言需要做的变换。
如何转化一个矩阵
接下来使用一个具体的例子:变换左旋转90°,在我们的语言中,和詹妮弗的语言分别是如何互相转换的来加深印象
- 左乘基变换矩阵(矩阵的列代表的是用我们的语言描述詹妮弗语言的基向量):需要被转换的詹妮弗的语言: ➜ 使用我们的语言描述来描述同一个向量
- 左乘线性变换矩阵(表示的变化为:左旋转90°):➜变换的后的向量(还是以我们的语言来描述)
- 左乘基变换矩阵的逆:➜变换后的向量(用詹妮弗的语言来描述)
这三个矩阵合起来就是用詹妮弗语言描述的一个线性变换
总结
表达式 暗示着一种数学上的转移作用
- 中间的 M 代表一种你所见的转换(例子中的90°旋转变换)
- 两侧的矩阵 A 代表着转移作用(不同坐标系间的基向量转换),即就是视角上的转换
- 【重要】矩阵乘积的结果仍然表示着同一个变换,只不过从其他人的角度来看
这给了很多域变换的应用一个直观的理解,把这简单的几行记录清晰,
特征向量与特征值
在这一部分中,你会发现,前面提到的所有几何直观:线性变换,行列式,线性方程组,基变换会穿插其中。不仅给了你一个机会检验之前的理解是否深刻(在这一节,会添加一些超链接,方便你进行复习和定位),更多的,现在,是拼装起来感受成就感的时刻了!
What
首先,我们假设坐标系的一个基变换(对 和 张成的空间做一个线性变换 ),即 和 。在变换的过程中,空间内大部分的向量都离开了它所张成的空间(即这个向量原点到终点构成的直线) ,还有一部分向量留在了它所张成的空间,矩阵对它仅仅是拉伸或者压缩而已,如同一个标量。
如上图,是给出例子中,x轴所有向量被伸长为原来的3倍,一个明显留在张成空间内的例子。另一个比较隐藏的,是(−1,1)这个向量,其中的任意一个向量被伸长为原来的2倍
- 变换中被留在张成空间内的向量,就是特征向量(上例x轴和(−1,1))
- 其中每个向量被拉伸或抽缩的比例因子,就是特征值(上例3和2)
- 正负表示变换的过程中是否切翻转了方向
Why
若想知道为什么它有用途并且值得细究,考虑一个三维空间中的旋转,如果你能找到这个旋转的特征向量,也就是留在它张成的空间里的向量,那你找到的就是旋转轴,而且吧一个三维旋转看成是绕某个旋转轴旋转一定角度,要比考虑相应的3*3矩阵直观得多(这种情况下的特征值必须为1,因为旋转并不缩放任何一个向量)
对于任一矩阵描述的线性变换,你可以通过将矩阵的列看作变换后的基向量来理解它。但是,理解线性变换作用的关键(或者说更好的描述一个变换)往往较少依赖于你的特定坐标系,更好的方法是求出它的特征向量和特征值
How
从计算角度来看特征值和特征向量,里面包含了很多对以前只是回顾和整合
根据特征向量和特征值的定义,使用数学的方法来表示即:
A 是求特征值和特征向量的变换矩阵; 是特征向量;λ 是特征值;目标是找 和 λ
至于为何会用这个式子来定义特征向量和特征值呢,我们继续观察这个式子中的 ,考虑到右边是一个矩阵乘法,我们希望左右都是一个矩阵乘法,这样方便等价和计算。观察发现, 就是给 中每一个元素都乘以 λ 。对角矩阵 且对角线元素为 λ 的矩阵也能有同样的变换结果,得到下列表达式:
观察这个等式你会发现:向量在经过变换之后结果为零向量;也就是说,向量是矩阵A的一个特征向量,在变换中停留在它张成的空间里。
如果本身就是零向量的话,这个等式恒成立,但这没什么意义,我们想要的是一个非零特征向量。在行列式、列空间以及零空间章节我们知道,当且仅当矩阵代表的变换将空间压缩到更低的维度时,才会存在一个非零向量,使得矩阵和它的乘积为零向量(也即只有当压缩维度的情况存在时,某一个非零向量才能在零空间里面,直接线性变换成零向量)。而空间压缩对应的就是矩阵的行列式为零。
上图显示随 λ 可视化的变化情况,从这幅图中,使用的例子是。因为只有当行列式为零(也即面积为0)时 λ 才会是特征值,也就是说调整后的变换将空间压缩到一个更低的维度上,此时特征值恰好是1。
为了求出属于某个特征值的特征向量,比如上面例子中的λ=1,将λ的值代入矩阵当中,然后求解出在这个矩阵变换后成为零的向量。如果进行计算,就如同求解其他线性方程组一样:
你会发现所有的解全部落在由向量(2,-1)张成的过原点的直线上。
或者我们再来看另一个例子:
特征向量的特殊情况
旋转变换
二维线性变换不一定有特征向量,比如一个旋转变换,它并没有特征向量,因为每一个向量都发生了旋转并离开了其张成的空间。如果尝试解出特征值会发现答案是 虚数 ,没有实数解表明它没有特征向量,即特征值出现复数的情况一般对应于变换中的某种旋转
剪切变换
Shear变换。x轴不变,只有一个特征值为1()。
伸缩变换
特征值只有一个,但空间中所有的向量都是特征向量
特征基
对角矩阵:除了对角元(主对角线上的元素)以外其他元素均为0的矩阵被称为对角矩阵。
解读它(对角矩阵)的方法是:所有的基向量都是特征向量,矩阵的对角元是它们所属的特征值。
因为之前提到过,矩阵的第一列是 ,第二列是 ,往后同理。这样就能发现,如果一列只有对应的位置非零,那么这个坐标轴本身就是特征向量
对角矩阵有一个好处是计算方便,多次矩阵乘法非常容易,因为对角矩阵仅仅让基向量与某个特征值相乘(矩阵N次幂,只要对角线元素的N次幂即可),比如:
这时我们就希望利用对角矩阵(基向量为特征向量)的便于计算的特性。当然对于基向量同时也是特征向量的情况,你很可能没有那么幸运。但是如果你的变换有许多的特征向量,多到你能选出一个张成全空间的集合,那么你就能变换你的坐标系,使得这些特征向量就是基向量。
在上面我们已经讨论过基变换了,利用上一节提到的基向量变换的方法:把特征向量(比如这里的(1,0),(-1,1)向量)作为基,对每一个矩阵A,在右侧写下基变换矩阵,再在左侧写下基变换矩阵的逆,【重要】当你将原始的变换夹在两个矩阵中间时,所得的新矩阵代表的是同一个变换,不过是从新基向量所构成的坐标系的角度来看的。
【重要】用特征向量来完成这个变换的意义在于,这个新矩阵必然是对角的,并且对角元为对应的特征值,这是因为,它所处的坐标系(新基向量所构成的坐标系)的基向量在变换中只进行了缩放,如下图所示
一组基向量(同样是特征向量)构成的集合被称为一组:特征基
- 所以,如果你要计算矩阵A的100次幂,一种更容易的做法是:先变换到特征基,在那个坐标系中计算100次幂,然后转换回标准坐标系。
- 但需要说明的是,并不是所有的矩阵都能对角化,比如Shear剪切变换,它的特征向量不够多,不足以张成一个空间。
抽象向量空间
线性代数的一切概念,如行列式和特征向量,它们并不受所选坐标系的影响,但是这两者是暗含于空间中的性质
这里所说的空间是什么意思呢?
函数与向量
从某种意义上来说,函数实际上也只是另一种向量,对于函数来说,也有可加性,可比性
你能发现,这两个性质和向量加法与向量乘法是息息相关的。所以我们对于矩阵中所有定义的概念和方法,都可以相对应的应用到函数中。如函数的线性变换:函数接受一个函数,并把它变成另一个函数。如微积分中可以找到一个形象的例子——导数。关于这一点,你听到的可能是【算子】,而不是【变换】,但他们所要表达的思想是一样的
以导数为例,既然两者是一个东西,那么我们可不可以使用矩阵来描述多项式空间呢?
如上图,以取 x 的不同幂次方作为基函数,然后既可以写出求导变换的矩阵。这更进一步佐证了开篇提到的关键句子,矩阵 = 变换的数字表达
线性代数 | 函数 |
---|---|
线性变换 | 线性算子 |
点积 | 内积 |
特征向量 | 特征函数 |
如上表一样,相同的概念只是在不同的领域有着不同的名称罢了。
有很多类似向量的不同事物,只要你处理的对象具有合理的数乘和相加的概念,线性代数中所有关于向量,线性变换和其他的概念都应该使用与它。作为数学家,你可能希望你发现的规律不只对一个特殊情况适用,对其他类似向量的事物都有普适性
向量空间
这些类似向量的事物,比如箭头、一组数、函数等,他们构成的集合被称为:向量空间
向量加法和向量数乘的规则 - 被称为公理,如下图
它仅仅是一个待查列表,以保证向量加法和数乘的概念确实是你所希望的那样。这些公理是一种媒介,用来连接数学家和所有想要把这些结论应用于新的向量空间的人
仅仅根据这些公理描述一个空间,而不是集中于某一个特定的向量上。简而言之,这就是为什么你阅读的每一本教科书都会根据可加性和成比例来定义线性变换
总结
对于【向量是什么】这个问题,数学家会直接忽略不作答。向量的形式并不重要,只要相加和数乘的概念遵守八条公理即可。就和问“3”究竟是什么一样。在数学中,他被看作是所有三个东西的集合的抽象概念,从而让你用一个概念就能推导出所有三个东西的集合。向量也是如此,它有很多种体现,但是数学把它抽象成【向量空间】这样一个无形(抽象)的概念
普适的代价是抽象(abstractness is the price of generality)。学习的过程只能来源于解决问题,来源于带有思考的不断重复,但如果你具备了正确的直观,你会再以后的学习中更加高效。
【转自】
【参见】