python实现矩阵叉乘_【IN MEMORIAM, 3000??】向量叉乘与对偶性

3a141d5c7fe92487d5bdc14518be2154.png
Even dead, I am the hero. ——Tony Stark

3ef061ed201a1ccc45505cbdab060ac3.png

写在前面

应同学请求,更一篇向量的文章. 据这位同学所说,很多学物理的学生都不知道洛伦兹力和磁场方向实际上是由向量乘法(叉乘)得出的. 我记得之前也看过这样的一个回答,好像说的是中国教育最失败的学科是什么,有人回答物理,并且给出了这个例子. 对此我表示怀疑. 不过想到自己在学习过程中也遇到过关于向量乘法的困惑,而且正好有人需要这篇文章就开更了.

这篇文章首先会先讲解一些必要的线性代数知识. 线性代数,尤其是行列式对部分同学可能理解难度较大,但是他们在深入了解向量乘法的过程中起到了非常重要的作用,所以学习一些线性代数的知识是十分有必要的. 我也会用尽可能简单的语言讲解.

在接下来的章节中,我会讲解叉乘的几何意义,并且建立叉乘的代数/几何联系. 最后我们会涉及到一个数学中非常优雅的思想,也就是对偶性(主要受到了三蓝一棕的启发并总结他的讲解).最后由于一些读者可能不熟悉线性代数,后面会附上一些学习资料.

目录

0.一点必要的线性代数

1.向量叉乘的代数/几何意义

2.叉乘的对偶性

3.附录

0.一点必要的线性代数

0.1向量的表示方法

从物理学的角度看,向量是有大小有方向的物理量. 任意一个在

的向量
都可以分解成水平分量
和竖直分量
. 一般我们将其表示为
或者
.同样的,任意一个在
的向量
都可以分解为三个方向的分量. 记为
或者
.

0.2向量的点乘

考虑两个在

的向量
. 点乘实际上将向量
投影到了向量
上,再乘以
的长度. 一般我们把
点乘
记为
或者
.

定义

.

数学上来讲,一个在

的向量实际上一个2*1的矩阵,
表示向量
的转置,
. 具体不多加说明.

物理上习惯用几何意义定义点乘,假设

之间的夹角为
, 则有
.

我们可以证明这两种表示方法是等价的. 考虑下图中的两个向量, 投影长度为

04ca17f85ee794778013a577e5c5f87f.png

证明:根据余弦定理有

整理得到

0.3矩阵与线性变换

我们非常熟悉函数的作用. 考虑函数

,对于每一个标量输入
, 函数
都将其与一个输出
对应. 由于输入的标量是一个实数,输出也是一个实数,所以函数
是从实数集到实数集的映射,记为
.

同样的,如果我们考虑一个向量

作为输入,最后得到了一个向量作为输出. 这种情况也可以看作是一个函数,只不过输入从标量变成了向量. 如果现在我们的输出是
,那么仍然可以用一个函数
表示这个变换. 即
.我们用矩阵来表示这个函数:

这个矩阵的第一列是

. 它的意思是对于单位向量
经过这个变换
后变成了
;第二列
表示的是单位向量
在经过这个变换
后变成了
. 所以对于向量
,这个向量在经过这个变换前可以表示为
,在经过变换后,这个关系式是没有改变的. 也就是说
仍然可以用两个单位向量表示. 但是函数
作用在了
的所有向量上,也就是说单位向量的坐标也变了,所以此时经过变换的向量
可以表示为

看到这里,你大概已经初步入门了矩阵乘法,矩阵

乘以一个向量
实际上等于
. 矩阵乘法在这里不细讲,大概了解就好,在后面会附上学习资料. 矩阵乘法本质上是用来描述
线性变换的工具.

“线性变换”实际上是函数的另外一种说法. 在线性代数中,一个输入得到一个输出,这就是一种变换. 为什么要叫“线性”?因为线性函数

满足两个基本条件:首先,
; 另外,
,其中
是一个任意常数,
可以是标量,也可以是向量. 如果函数
满足上面两条特征,就称其为一个线性变换. 线性变换看上去很抽象,但实际上线性变换是一个非常常见的数学概念. 微分和积分就是线性变换:

对于一个向量,如果存在一个线性变换,一定可以用一个矩阵乘上这个向量表示这个线性变换(这一点非常重要!).

定义 一个m*n的矩阵
定义了一个从
的线性变换. 即
.

最后还需要讲解一些常规的符号,回到刚刚的例子

, 我们的输入是一个二维向量,输出也是一个二维向量,所以我们说
定义了一个线性变换,记为
. 如果我们让一个二维向量(输入)和给定的一个二维向量点乘,得到了一个标量(也就是一个一维向量),那么这个线性变换记为
.

0.4行列式

每一个矩阵(线性变换)都可以被一个数字来描述. 这个数字可以告诉我们线性变换对向量空间改变了多少. 这个数字就是行列式. 下面讲解一下记法.

一个矩阵

记为
或者
.对于3*3的矩阵同样成立. 行列式由三个重要的性质定义:

1.单位矩阵的行列式值为1:

;

2.行列式的每行是线性的. 也就是说

3. 在换行后,行列式的值会正负颠倒:

.

现在我们提出,行列式

的绝对值值是由向量
围成的平行四边形的面积.

证明:当

,
时,这个平行四边形是边长为1的正方形,面积等于1,符合性质1;当其中的一个向量
被扩大/缩小了
倍后,平行四边形的面积也会扩大
倍(下图左),当其中的一个向量被加上了另一个向量
,令多出来的面积为
(下图右). 平移之后的总面积是
. 这说明面积是对于每行(每个向量)是线性的,满足性质2;最后,如果两个向量的方向被颠倒过来后,面积不变,但是行列式变号了(绝对值不变),满足性质3. 由于这个平行四边形的面积满足行列式的三个定义,所以他们在数学上是等价的. 故行列式
的绝对值值是由向量
围成的平行四边形的面积.

65aa62bb4d3d17725a404284c1fe23cb.png
图片来自 Introduction to Linear Algebra 5ed-Gilbert Strang

同理,读者也可以自行证明3*3的行列式

,
,
三个向量围成的平行六面体的体积.

4c22b3f47c837742c7579db74aebc33c.png
图片来自 Introduction to Linear Algebra 5ed-Gilbert Strang

最后需要讲讲行列式的计算方法. 这里就不做推导,直接给出结果了, 有兴趣的读者可以查看附录给出的学习资料.

对于2*2的行列式

.

对于3*3的行列式

.

1.向量叉乘的代数/几何意义

向量

的叉乘记做
.叉乘得到的是一个向量.

定义1: 假设

之间的夹角为
,则
. 向量
的方向始终垂直
所在的平面.

判断

的方向:用手握住
,转过一个最小的角度握住
,此时大拇指所指的方向就是
的方向. 图中有两个向量
.其中
. 图中大拇指所指的方向就是
的方向.

0c42b701bdc9a4c92b1708eef392b1bf.png
图片来自www.bing.com

根据定义可以知道,叉乘得到的向量

的模长就是由
围成的平行四边形的大小. 这就是叉乘的几何意义.

3d65033077be6a79c4806fc5b6efea33.png
图片来自www.bing.com

但是我们知道,

所围成的平行四边形的大小也可以用行列式来表示. 现在我们证明行列式的表示方法和叉乘的表示方法
是等价的.

证明:考虑向量

,
. 则
.

根据余弦定理有

在一般的经典力学下我们研究的都是二维向量,所以一般向量的长度都是知道的. 用这种方法可以很快得到叉乘向量的模长和方向. 然而在多变量微积分和复杂一些的流体力学中,很多时候我们需要处理三维向量. 两个三维向量的叉乘可以用一个3*3的行列式解决.

定义2: 对于向量

和向量
,这两个向量的叉乘
.

经常的,一种辅助记忆的方式是用一个三阶行列式来表示.

.

运算得到

.

注意当两个向量在

中时,叉乘后得到的向量仍然是垂直于两向量所在的平面的. 但是在上面的式子中,我们加入的第三个向量
只是形式上的,为了方便记忆,所以此时我们计算的行列式不是平行六面体的体积而是向量
. 叉乘只和两个向量围成的平行四边形大小有关,于平行六面体的体积无关. 这里非常值得思考,会在下一章节解释.

53276d544458ae83a7d21c4378dd0bc2.png
图片来自www.mathsisfun.com

2.叉乘的对偶性

到目前为止,有两个非常让人困惑的问题,也是两个非常值得思考的问题:

I. 为什么在0章节我们明明说了3*3的行列式是用来计算平行六面体的体积的,这里却用来定义向量的叉乘?为什么得到的结果不是体积而是平行四边形的面积?

2.叉乘的代数定义中,在行列式里面加了一行,是一个根本不是向量的东西

,这又是什么意思?虽然三阶行列式记起来方便,但是为什么要这么记呢?有没有什么原因?

在本章节中我会解释这个问题. 这是一个非常具有思维深度的问题. 三蓝一棕大佬为这个问题提出了一个很完美的解答. 我的想法和他类似,但是这里主要概括一下他的解释,因为他的解释更加系统化.

首先我们需要先了解对偶性. 对偶性是线性代数中一个非常重要的概念. 然而,对偶性却不仅仅存在于线性代数中,它存在于无数的数学分支中. 对偶性指出,两个看似截然不同的数学概念可能有深刻的内在联系. 对偶性是一种很优雅的数学现象. 这个问题就是对偶性的一个很好的例子.

首先我们考虑一个行列式:

.

在这个行列式中,假设向量

和向量
已经被给定了. 也就是说它们在三维坐标系中已经固定了.
则是一个任意的向量.

a6197e649d818d271baae43acdf03740.png
图中x,y两个向量是固定的,z是可以变化的向量,对应图中的a,b和(x,y,z)图片来自Linear Algebra with Applications, 9th Edition by Steven J. Leon

这个行列式实际上就是前面讲过的一个函数

, 对于这个函数输入一个向量
就会给出这个向量和
两个向量围成的平行六面体的体积. 也可以写成

.

此时你应该可以立刻发现函数

是线性的!

证明:当向量

的值扩大或者缩小
倍,平行六面体的体积也随之变化
倍. 同时如果向量
被移动了(也就是说在它的基础上多加了一个向量),假设原体积为
,新增的体积为
,最后通过切割和平移,得到的总体积是
. 这也是在0章节中我们证明过的结论.

这说明函数

是一个线性变换. 对于一个线性变换,我们一定可以找到一个矩阵来描述这个函数. 由于输入是一个三维向量,输出是一个数字(一维向量),所以这个线性变换是
.

现在问题是,什么样的矩阵乘以一个1*3的矩阵(三维向量)才能使得结果变成一个数字?很明显如果有用另外一个三维向量

和向量
点乘,就可以达到目的. 令
. 注意点乘实际上就是
. 所以描述这个线性变换的是一个1*3的矩阵.

所以现在我们有了

计算等式两边后我们得到了

那么为什么把向量

和向量
点乘就可以得到向量
和另外两个向量
围成的平行六面体的体积呢?因为得到的向量
实际上就是
.

实际上这可以从几何学的角度来解释:

76d2b07ed3a870d14fc812c8dd093359.png
图片来自Stewart Calculus,经过笔者加工

要计算上图的这个平行六面体的体积,已知它的底面积,也就是由向量

围成的平行四边形的面积为
,高为
,那么体积
. 假设我们的第三个向量(自由向量或者叫做变量)是
,只需要把
投影到一个垂直
平面的向量
就可以得到高度
了. 而这个投影就是
.最后还需要乘上一个
. 如果这样的向量
满足函数
,那么
一定等于
,而且向量
就是
.

既然

,那么我们现在可以回答上面的问题了:

-那个根本不是向量的东西

是什么意思?

答:只不过把一个可以变的向量

变成了
从而提醒我们,
实际上是一个向量(因为叉乘的结果最后是一个向量),它与
点乘可以表示
围成的平行六面体的体积.

-为什么叉乘的定义需要用行列式来表示?

答:因为三维向量的叉乘和行列式有关. 问题的起源是我们想知道什么样的向量与与

点乘可以表示
围成的平行六面体的体积. 答案是这个向量正好是
.这个问题是对偶性的一个深刻而优雅的例子.

3.附录

书本

Introduction to Linear Algebra 5ed, Gilbert Strang, 2016, Wellesley-Cambridge

Linear Algebra with Applications, 9th Edition, Steven J. Leon

公开课

MIT 18.06 Introduction to Linear Algebra

Linear Algebra​ocw.mit.edu
e295c52159caa8fb32f7496601b36083.png

视频

Essence of linear algebra — 3Blue1Brown​www.3blue1brown.com
6573cb21e3ad5e5d9f04af474f626cdc.png

引用

[1]Introduction to Linear Algebra 5ed, Gilbert Strang, 2016, Wellesley-Cambridge

[2]Linear Algebra with Applications, 9th Edition, Steven J. Leon

[3]Calculus, Early Transcendental, 8ed, James Stewart

[4]The Essence of Linear Algebra, 3Blue1Brown

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值