四元数的初步总结(一)

前一阵子,以前公司的一位同事向我请教一段计算机图形程序中的算法,其中涉及齐次坐标和四元数。齐次坐标问题到好讲解,但四元数方面以前所知几乎为零。正好我看到齐民友在《复分析,可视化方法》译后记中提到的一本书:《高观点下的初等数学》([德]克莱因 著,以下简称《初等数学》)当中有一段讲到四元数,于是就细读了一遍,把这个专题的整理笔记写下来。

但是那本书里有很多结果依靠繁杂的机械运算,让人看了不知道这样的结果是怎么得出来的。因此我们这里用向量代数的观点重新审视四元数的一些结果,让四元数的特性看起来更直观,更自然。另外还有一些我认为重要的有关四元数引入的背景知识,例如数域的扩充问题的证明,那本书里只有一部分提示,这里也试着补全一些。

一、四元数引入的理论背景

将实数域扩充到复数域,并用复数来表示平面向量,用复数的加、乘运算表示平面向量的合成、伸缩和旋转变换,这些观念已经在中学课程中学过了。那么,很自然的问题就是,在三维,或更高维空间中是否也有复数的类似物?也就是说,像扩充实数那样,在复数域的基础上添加一个或几个新的元素,并且让它们跟原来的复数做加减乘除,是否就可以得到一个新的数集,并且其中的元素还可以像复数域那样做加、减、乘、除运算,并满足通常复数的那些运算律,包括加法和乘法的交换律与结合律、乘法对加法的分配律等待?更进一步,我们是否可以期望用这样的数来表示三维或更高维空间中的伸缩和旋转,就像用复数表示平面向量的伸缩旋转那样方便?

把问题说得明确一些,即是说,我们是否可以像得到复数域那样,在复数域中再添加一个新的元素 \( j\)(因此也是在实数基础上添加两个元素 \( i\) 和 \( j\)),得到一个类似于复数集合 \( F=\{a+bi+cj\,|\,a,b,c \in \mathbf R\}\),这个集合中的元素 \( a+bi+cj\) 当 \( c=0\) 时就是普通的复数,当 \( b=c=0\) 时就是普通的实数,并且通常数的加减乘除运算及其性质都可以在这个集合上保持,即满足:
1、对于任意两个数,它们的和是唯一确定的。
2、对于任意两个数,它们的积是唯一确定的。
3、存在一个数0,它具有性质:对于任意a,均有a+0=a。
4、对于每一个数a,均存在数x,适合等式a+x=0。
5、加法适合交换律:a+b=b+a。
6、加法适合结合律:(a+b)+c=a+(b+c)。
7、乘法适合交换律:a·b=b·a。
8、乘法适合结合律:(a·b)·c=a·(b·c)。
9、乘法对加法适合分配律:a (b+c)=ab+ac 和 (a+b)c=ac+bc。
10、1 是乘法单位元,即仍然满足 1·a=a·1=a
11、乘法有逆元,即对每个非零数 a,存在唯一的数 x,满足等式 xa=ax=1。

历史上有很多数学家试图寻找过三维的复数,但后来证明这样的三维复数是不存在的。有关这个结论的证明,我没有查到更明确的版本,据《古今数学思想》中的一个理由,三维空间中的伸缩旋转变换需要四个变量来决定:两个变量决定轴的方向,一个变量决定旋转角度,一个变量决定伸缩比例。这样,只有三个变量的三维复数无法满足这样的要求。

但是历史上得到的应该是比这个更强的结论,即使不考虑空间旋转,只从代数角度来说,三维的复数域作为普通复数域的扩张域是不存在的。并且,据《古今数学思想》叙述,即使像哈密尔顿后来引入四元数那样,牺牲乘法交换律,这样的三维复数也得不到。(“……经过一些年的努力之后,Hamilton 发现自己被迫应作两个让步,第一个是他的新数包含四个分量,而第二个是他必须牺牲乘法交换律。”–《古今数学思想》第三册177页)
据《初等数学》中给出的提示,我们可以做出这个命题的证明:
证明:假设这样的数域 \( F\) 存在,那么类似于复数,我们显然可以将 \( F\) 看成实数域 \( \mathbf R\) 上的三维向量空间。这是因为 \( F\) 上有加法运算和数乘运算,满足
1) 加法交换律与结合律
2) 数量乘法的结合律
3) 0 可以作为零向量
4) 加法有负元
5) 1a=a
验证以上各性质没有用到乘法交换律。同时,因为 \( 1,i,j\) 是这个向量空间上的一组基底,所以这是个三维向量空间。
接下来考察 \( F\) 上的一个变换 \( f(x)=cx\),其中 \( c\) 不是实数,我们可以任取一个普通复数,比如 \( 1+i\)。可知这样的变换是线性变换,这是因为,由乘法对加法的分配律,有
\( f(x_1+x_2)=f(x_1)+f(x_2)\),
由乘法结合律,以及在复数范围内乘法有交换律,那么
\( f(kx)=kf(x), \forall k \in \mathbf R\)
因此,这是个实数域上三维向量空间中的线性变换,根据线性代数理论知,\( f\) 有特征值与特征向量,即存在实数 \( \lambda\) 和 \( F\) 中的元素 \( v \not=0\) 满足
\( cv=\lambda v\)
同时在等式两边右乘 \( v\) 的乘法逆元 \( v^{-1}\),就得到 \( c=\lambda\),这与 \( c\) 不是实数的假设矛盾。

知道了复数不能推广到三维,我们把目光移向哈密尔顿构造的四维复数,即四元数。

复数推广到四元数,必须牺牲掉数域的某一条或几条性质,哈密尔顿抛弃了乘法交换律。为什么是这样呢?因为:

命题2:在实数域中再添加有限个新的元素 \( e_2,e_3,\dots,e_n\) 得到的数域 \( F=\{a_1+a_2e_2+\dots+a_ne_n\,|\,a_i \in \mathbf R,i=1,2,\dots,n\}\) 都不可能比复数域大,也就是说,如果要求 \( F\) 还是数域,还满足所有运算性质,那么 \( F\) 就只能是跟复数域一样的东西(即跟复数域同构)。
证明:假设 \( F\) 是数域,那么同样的,可以把 \( F\) 看成实数域上的 n 维向量空间,在这个集合中任取一个非实数 \( v\),那么向量组 \( 1,v,v^2,\dots,v^n\) 因为有 \( n+1\) 个向量,所以线性相关,所以存在实数 \( c_0,c_1,\dots,c_n\) 使得
\( c_0+c_1v+c_2v^2+\dots+c_nv^n=0\)
因为 \( v\) 不是实数,所以这个多项式至少是2次的,因此不妨设 \( c_n=1\),因此 \( v\) 是这个实系数 n 次方程的根。因 \( v\) 与实数满足通常的运算律,根据多项式因式分解定理,可以把上面的实系数多项式分解为一次与二次实系数因式的乘积,得到
\( (v-x_1) \dots (v-x_r)(v^2+a_1v+b_1)\dots(v^2+a_sv+b_s)=0\)
因为 \( v\) 不是实数,所以前面的一次式不为零,只有后面某个二次式等于零。设 \( v^2+av+b=0\) 其中实数 \( a,b\) 满足 \( a^2-4b<0\)。
做变换 \( y=\frac{2v+a}{\sqrt{4b-a^2}}\),则有 \( y^2+1=0\)。
对于每一个新元素 \( e_i\),都有相应的 \( y_i\) 满足 \( y_i^2+1=0\),现在我们任取两个这样的 \( y_i\),不妨设为 \( y_1\) 和 \( y_2\),如果考察 \( F\) 的一个子集 \( K=\{a+by_1\,|\,a,b \in \mathbf R\}\),那么这个 \( y_1\) 就相当于我们通常的复数单位 \( i\),这个 \( K\) 也同构于通常的复数域 \( \mathbf C\)。如果在 \( K\) 上分解二次多项式 \( x^2+1\),我们就可以得到 \( x^2+1=(x+y_1)(x-y_1)\)。现在把 \( y_2\) 代入,有
\( (y_2+y_1)(y_2-y_1)=y_2^2+1=0\)。(注:关键在这个式子中的交换律,四元数没有交换律,因此四元数在这里没有问题)因此或者 \( y_1=y_2\),或者 \( y_1=-y_2\),说明 \( e_2\) 可以用 \( e_1\)
与实数运算表示出来,也就是 \( e_2\in K\)。
所以只能 \( F=K\),故 \( F\) 与复数域同构。

这样,又由于三维空间中的伸缩旋转的复合运算不满足交换律,那么哈密尔顿牺牲乘法交换律而引入四元数,就显得很自然了。

二、四元数的加乘运算

哈密尔顿在实数基础上添加三个新的基本单位元素 \( i,j,k\),做成一个新的数集:
\( F=\{d+ai+bj+ck\,|\,d,a,b,c \in \mathbf R\}\),基本元素之间的乘法满足
\( i^2=j^2=k^2=-1, ij=k,jk=i,ki=j,ji=-k,kj=-i,ik=-j\)
同时,1 仍然有乘法单位的特性,即 1 与任何单位元素相乘都等于那个元素:
\( 1^2=1,1i=i1=i,1j=j1=j,1k=k1=k\)

这样,相当于制定了一张单位元素之间的乘法表:

1 i j k
1 1 i j k
i i -1 k -j
j j -k -1 i
k k j -i -1

以上表格中,最左边的列表示被乘数,最上面行表示乘数。

那么根据这个乘法表,并且规定两个四元数 \( p=d+ai+bj+ck, q=w+xi+yj+zk\) 的加法与乘法运算如下:

对于加法,有
\( p+q=(d+w)+(a+x)i+(b+y)j+(c+z)k\)
对于乘法,有
\( p \cdot q=(d+ai+bj+ck)(w+xi+yj+zk)\)
我们先将 \( i,j,k\) 当成普通的三个变量来展开这个乘积,但要注意 \( i,j,k\) 之间的乘积的顺序,因为它们之间不满足乘法交换律;然后再对照乘法表,将之化简,就得到
\( p \cdot q=(dw-ax-by-cz)+(aw+dx+bz-cy)i\)
    \( +(bw+dy+cx-az)j+(cw+dz+ay-bx)k\)

以上就是四元数加法与乘法的定义。

可以立即验证加法交换律、结合律,以及等式 p+0=0+p=p,方程 p+x=0 恒有解,还有乘法对加法的分配律都是成立的。对于乘法结合律,我们使用一点小技巧,先不管 \( i,j,k\) 是什么,把它们当成普通的字母,那么对它们的加乘运算就类似于多元多项式运算了,只不过字母之间没有乘法交换律。但是结合律对字母乘法是成立的,因为可以用乘法表验证。这样的多元多项式之间必然是满足乘法结合律的,因此 \( p(qr)\) 和 \( (pq)r\) 从形式上相等(即 i,j,k,i^2,j^2,k^2,ij,ji,jk,kj,ik,ki,iji,jij… 等等这些一次到三次乘积的系数对应相等,想想矩阵运算!)那么把它们按乘法表替换之后也相等。这是《初等数学》中提出的方法。
另一种更讨巧的方法是《复分析,可视化方法》中用矩阵具体构造的四元数模型,设置四个二阶矩阵
\( \begin{bmatrix}1&0\\ 0&1\end{bmatrix},\begin{bmatrix}0&i\\ i&0\end{bmatrix},\begin{bmatrix}0&-1\\ 1&0\end{bmatrix},\begin{bmatrix}i&0\\ 0&-i\end{bmatrix}\)
分别定义成四元数中的四个单位元素 \( 1,i,j,k\),它们的乘法表符合四元数乘法表,那么它们的实系数线性组合对应的矩阵的加法与乘法可以与四元数集合一一对应。利用矩阵的结合律,可证明四元数的结合律(这个过程中需注意四个矩阵的线性无关性,否则这样的证明是无效的)。因此乘法结合律也可以证明是成立的。

1是乘法单位元,即 1p=p1=p,这条性质也容易验证。

所以,对于上面提到的数域的十一条性质,除第七条乘法交换律,和第十一条乘法逆元存在性之外的所有性质,四元数都满足。四元数显然不满足乘法交换律,那么对于乘法逆元的存在性,以及乘法的逆运算–除法的讨论将在下一节进行。下一节还将集中于四元数运算的几何意义。

9月16日补充:

1, 有关四元数乘法表的确定

可能有些人看到四元数乘法规则的时候,会感觉到有些奇怪,为什么三个数的平方都定义成 -1?就没有其他方式的定义吗?而更多的人可能觉得乘法表的指定完全是人为规定的,没有什么道理。
这个问题在昨天做出”命题2″的证明的时候就有了一点启示,昨天躺在床上终于把它想清楚了。

在”命题2″的证明前半部分我们看到,没有乘法交换律的时候,每引入一个新的类型的数,比如在实数中引入 \( i\),再引入 \( j\),每引入一个这样的数,就相当于引入了方程 \( x^2+1=0\) 的一个新的根。即使不令 \( j^2=-1\),还是会有一个新的数满足 \( (a+bi+cj)^2=-1\),那么这个数与原来的复数之间的关系就是平凡的相加相乘关系,用一个可以表示另一个。这样倒不如直接设 \( j^2=-1\)。
在复数基础上只添加一个 \( j\) 还不够,还有新的数需要引入,那就是 \( k\)。怎么引入 \( k\) 呢?注意到乘积 \( i \cdot j\),它不可能是三元的复数,不可能是 \( a+bi+cj\) 的形式,因为如果那样的话,参照上面乘法表,去掉最后的 \( k\) 做被乘数和乘数的行与列,其它行列就都与 \( k\) 无关,\( 1,i,j\) 三个数的实系数线性组合就构成”三元数”了,这是不可能的。所以乘积 \( i \cdot j\) 就引入一个新的数,定名为 \( k\)。那么 \( ik=iij=-j, kj=ijj=-i\) 就是必然的。这样,乘法表中只剩余四个空缺没有填满,分别是 \( ji,ki=iji,jk=jij,k^2=ijij\)。这四个值互相关联,只要确定一个,其它的也确定。目前还没有找到合适的必然的理由来定义它们的值。但它们的值不是随意确定的。比如,如果令 \( ji=k\),那么由于 \( ijji=-i^2=1\),得 \( k^2=1\),即 \( (k+1)(k-1)=0\),为了没有零因子只能 \( k=\pm 1\)。所以 \( k^2\) 如果是实数那么只能是负数。现在我们接受 \( k^2=-1\),那么其它值也随之确定,乘法表就确定下来了。