老齐
2023/04/27阅读:5主题:科技蓝
四元数、点积和叉积名文章
《机器学习数学基础》第1章1.4节介绍了内积、点积的有关概念,特别辨析了内积空间、欧几里得空间;第4章4.1.1节介绍了叉积的有关概念;4.1.2节介绍了张量积(也称外积)的概念。
以上这些内容,在不同资料中,所用术语的含义会有所差别,读者阅读的时候,不妨注意,一般资料中,都是在欧几里得空间探讨有关问题,并且是在三维的欧氏空间中,其实质所指即相同。但是,如果不是在欧氏空间中,各概念、术语则不能混用。
下面从数学史的角度,参考有关文献,阐述 空间中点积和叉积的内容,目的借此深入理解《机器学习数学基础》中有关概念。

再次强调,以下讨论,是在三维欧几里得空间。
而对点积和叉积的探讨,不得不从四元数开始。
1. 四元数
1.1 哈密顿
威廉·卢云·哈密顿爵士(英語:Sir William Rowan Hamilton,1805年8月4日-1865年9月2日),爱尔兰数学家、物理学家和天文学家。
“哈密顿”这个名称,在物理学中经常会见到,因为哈密顿在1833年建立了经典力学的重新表述(与之对应的另外一个表述是拉格朗日力学) ,并且此成果也被应用在量子力学中。
在数学方面,哈密顿最著名的贡献在于发现了四元数,在如今的计算机图形学、控制理论、信号处理、轨道力学等领域,都有四元数的应用。
此外,哈密顿还是语言天才,参考文献 [5] 中列出了他所懂的语言,抄录如下:
★哈密顿还精通多種語言。除了歐洲語言之外,他還懂得波斯語、希臘語、拉丁語、希伯來文、古代巴勒底的巴比倫文、印度梵語、佛教原典所用的巴利語、義大利語、法語、阿拉伯語、孟加拉語、巴基斯坦語、馬來語、梵文和中文等。
”

1.2 四元数定义
在复数 中,虚数单位 ,每个复数都可以视为平面上的一个点。
在三维欧几里得空间中,每个点可以用一个有序数 表示,这些点之间可以进行加法运算,但能不能做乘法运算?这个问题哈密顿也曾思考。据记载 ,1843年10月16日,哈密顿与夫人在运河边散步,经过一座桥,突然领悟到了四元数的定义,现在那座桥旁还立有石碑。

★石碑上的内容如下:
Here as he walked by on the 16th of October 1843 Sir William Rowan Hamilton in a flash of genius discovered the fundamental formula for quaternion multiplication & cut it on a stone of this bridge.
”
每个四元数(quaternion)都是 的线性组合,即一个四元数表示为:
其中, , 是实数。
四元数加法,与向量加法类似:
1.3 四元数乘法
根据四元数定义中规定的 ,可以进行虚数单位间的乘法计算,例如:
-
,右乘 ,得: ,即 。 -
,左乘 ,得: ,即 。 -
根据 ,左乘 ,得: ,即 。 -
......
可以得到如下乘法表:
. | ||||
---|---|---|---|---|
从上表中会发现,四元数的乘法显然不满足交换律,比如 ,而 。
两个四元数相乘:
标量与四元数相乘:
四元数的加法运算和标量乘法运算,符合向量空间的加法和乘法封闭,以及向量空间的8条运算法则(参阅《机器学习数学基础》第1章1.2.1节),故四元数的集合可视为一个定义于实数的四维向量空间:
此向量空间的基为 。
1.4 共轭和逆
设 ,
-
四元数的共轭定义为: 。
-
绝对值(模,长度,norm): (此处使用了 结论,证明见后续内容 )
-
,则 ,且 。
证明
-
若 ,定义逆元:
验证
若 ,即 是单位四元数,则 。
1.5 四元数表示:标量-向量
令 是 的单位向量(标准正交基),四元数 可以表示为:
其中 , ,且 。
1878年,英国数学家 William Kingdon Clifford 使用上述表示方式,计算两个四元数的乘积:
推导
因为:
代入(1.1)式,得:
(1.2)式中,即有两个向量的点积和叉积。
很可惜,Clifford提出了点积和叉积之后,未及推广,英年早逝。
1901年,美国物理学家吉布斯(Josiah Willard Gibbs)的学生将他的课堂讲义整理成书,名为《向量分析》(Vector Analysis),通过这个著名的教科书,点积和叉积得以推广。
2. 行列式与叉积
《机器学习数学基础》第4章4.1.1节中定义叉积,使用的是最常规的几何方法,下面根据参考文献 [8],从行列式角度来理解叉积。
设
又因为:
所以:
2.1 用行列式证明叉积性质
-
数量乘法结合律:
根据(2.1)式,得:
-
加法分配律:
利用前面的性质,得证。
-
正交:
若行列式中有相同的两行,则行列式值等于零。所以:
-
反对称性:
行列式的两行互相交换,行列式值更改符号,所以: