四元数的初步总结(二)

三、四元数乘法的性质与几何意义

四元数的乘法不满足交换律,比如, ij=-ji,jk=-kj,ik=-ki。但不是所有的四元数乘积在交换因子之后都变换符号,比如:
 (1+2i+3j+4k)(5+6i+7j+8k)=-60+12i+30j+24j

 (5+6i+7j+8k)(1+2i+3j+4k)=-60+20i+14j+32k
但是也不是所有的四元数都不遵循交换律,比如,
 (1+2i+3j+4k)(1-2i-3j-4k)=  (1-2i-3j-4k)(1+2i+3j+4k)=30

这个事情比较奇怪,两个四元数  p,q,它们不同顺序的乘积  pq qp 到底有什么关系呢?看一下刚才的三个例子,好像不管两个乘积是否相等,它们的实数部分都是相等的。
您可以再试验几个例子,看一看是不是这样,甚至可以编写一个计算四元数乘积的程序,尝试更多的例子,看一看两个乘积到底有什么关系。但是在我们讨论之后,事情就会比较明朗了。

我们从最简单的例子思考, ij=-ji=k,jk=-kj=i,ki=-ik=j,这几个式子让我们想起了三维空间中的外积,如果把  i,j,k 看成三维空间中右手直角坐标系的三个坐标轴上的单位向量,那么它们之间的外积完全符合四元数乘法表。外积也满足乘法对加法的分配律,数量乘法也可以自由出入外积的运算,等等。所以,两个三维向量的外积运算就很类似于四元数的乘法运算:
 (ai+bj+ck) \times (xi+yj+zk)=  axi^2+byj^2+czk^2+(bz-cy)i-(az-cx)j+(ay-bx)k
但是所不同的是,在四元数乘法中,三个平方项都等于 -1,而在外积中,同方向的向量外积是零。我们或许为此感觉沮丧,但话说回来,这样也许更好,查看三个平方项的系数,发现它们的和恰好构成三个向量的内积,因此,四元数的乘积把两个三维向量的内积和外积都包含在了结果里,总结起来就是:
设两个三维向量,用四元数表示为  u=ai+bj+ck,v=xi+yj+zk,他们的乘积为
 uv=-\langle u,v \rangle+u \times v

现在我们涉及了三种乘积:四元数乘积,我们用  \cdot 表示,或干脆省略符号;内积,用尖括号  \langle,\rangle 表示;外积,用叉乘号  \times 表示。我们还涉及两种量:实系数, a,b,c,d,w,x,y,z,m,n 表示;四元数, p,q 表示;三维向量, u,v。注意有时向量和四元数没有严格的区分,一个三维向量也可以看成实数部分为零的四元数,而一个一般的四元数也可以看成四维向量。

因此,一个四元数可以分解为一个实数和一个三维向量的和:
 p=d+u
我们通常称这两部分是四元数的实数部分和(三维)向量部分。那么两个四元数的乘积就可以表示为
 pq=(d+u)(w+v)=dw-\langle u,v \rangle+dv+wu+u \times v
而如果把它们交换乘积,就有
 qp=wd-\langle v,u \rangle+wu+dv+v \times u
注意这两个乘积中,实数乘积和向量内积都是有交换律的,三维向量线性组合部分也相同,只有三维向量外积与顺序有关,有  u \times v=-v \times u。这样,刚才的问题就明朗了, pq-qp 就是两个向量部分的外积的二倍。如果向量部分外积为零,两个四元数的乘积就可交换了。
注意一下乘积式中如果让向量部分内积那一项改变一下符号,就会有更简单的表达式,我们用  \bar p=d-u 表示与  p 实部相等,向量部分成相反数的四元数,称为  p 的共轭。显然  \overline{\overline p}=p,那么
 \bar pq=\langle p,q \rangle+dv-wu-u \times v
其中  \langle p,q \rangle 表示四维向量之间的内积。
 q=p 的时候,我们有
 \bar pp=\langle p,p \rangle=|p|^2=d^2+a^2+b^2+c^2=p \bar p
联想到普通复数的模方公式,这里的公式就是复数模方公式的推广。那么,如果  p \not=0,四元数乘法倒数的问题就解决了,设  p^{-1}=\frac{\bar p}{|p|^2},那么  pp^{-1}=p^{-1}p=1。尽管每个非零四元数都有倒数,但是因为四元数乘法没有交换律,也就不可能像实数或复数那样写分式。设想一个算式写成  \frac{p}{q},那么是理解为  pq^{-1} 还是理解为  q^{-1}p 呢?这两个乘积可能是不同的。这一点跟矩阵的情形是类似的。

接下来,用上面提到的四元数乘积的内外积表达式,可以验证, \overline{pq}=\bar q \bar p,再用这个结果得到  |pq|=|p| \cdot |q|。这些都是简单的。

为了更清楚地看到两个四元数乘积到底是什么样子,我们把上节用到的向量空间的观点拿过来,四元数的全体构成的集合  F 是实数域上的四维向量空间,可以把四元数  p=d+ai+bj+ck 看成四维实数元组  (d,a,b,c)。而且,同样的,一个固定的四元数  p=d+u 乘以四元数变量  q,就相当于四维向量空间  F 上的线性变换,我们考察一下这样的线性变换  Tq=pq,如果  p 是个实数,那么这个线性变换只是四维空间中的伸缩变换。所以现在,我们假设  p 的向量部分不为零。
因为  |Tq|=|p||q|,所以这是个可逆的线性变换,不仅如此,所有的向量长度都伸缩相同的倍数,也就是一个等距线性变换和一个伸缩的复合。根据线性代数理论,一个等距线性变换要么是单纯的旋转,要么是单纯的对称变换,要么是二者的复合。而四维空间上这样的线性变换必有两个垂直的二维不变子空间,也就是说,可以在四维空间中找到两个相垂直的平面,在每个平面上的向量经过变换之后还是在这个平面上。那么我们现在找一下变换  T 的两个不变子空间。
 Tq=pq=\langle \bar p,q \rangle+dv+wu+u \times v
 q 的向量部分与  p 向量部分同向或反向时,即  q=w+xu 时, pq=\langle \bar p,q \rangle+(dx+w)u,乘积之后还是一个实数加上  u 的倍数的形式。这表明,四维向量  (1,0,0,0) u 张成的二维平面就是一个不变子空间。
那么另一个不变子空间就应该是和向量  (1,0,0,0) u 都垂直的平面,因为与  (1,0,0,0) 垂直,所以这个平面上所有向量的第一个分量,也就是四元数的实部都是零,它们与  u 一样,都是某个四元数向量部分。在向量部分构成的三维空间中,可以找到两个单位向量  u_1,u_2,使得  u,u_1,u_2 两两垂直并且三个向量成右手定则关系。那么如果  q=xu_1+yu_2,则由于  \bar p,q 垂直,有  \langle \bar p,q \rangle=0,由于  u,u_1,u_2 的位置关系,有  u \times q=u \times u_1+u \times u_2=mu_2+nu_1,因此
 Tq=(n+x)u_1+(m+y)u_2,还是在这个平面上。

考察一下这个乘积在这两个平面上分别干了什么事情,我们就能把四元数乘积看得更清楚了。

 (1,0,0,0) \frac{u}{|u|} 张成的平面上, T (1,0,0,0) \frac{u}{|u|} 分别映射为  d+u -|u|+du/|u|,因此, T 在这个不变子空间上的矩阵为
 \begin{bmatrix}d&-|u|\\ |u|&d \end{bmatrix}
 u_1,u_2 张成的平面上,两个基底分别映射为  du_1+|u|u_2 du_2-|u|u_1。因此在这个不变子空间上的矩阵也为
 \begin{bmatrix}d&-|u|\\ |u|&d \end{bmatrix}

回想一下平面上的旋转矩阵的公式, T 在这两个平面内的行为都是一个旋转再复合一个伸缩,旋转的角度是  \theta 满足  \cos \theta=\frac{d}{|p|},\sin \theta=\frac{|u|}{|p|},在第一个平面上是从  (1,0,0,0) u 旋转,而在第二个平面上是从  u_1 u_2 旋转。伸缩因子为  \sqrt{d^2+|u|^2}=|p| T 的行列式值也是这两个矩阵行列式的乘积,即  |p|^4

如果  p 乘在右面,那么在第一个平面内,这个变换的作用与上述  T 相同,因为在这个平面内的向量与  p 的乘积是可交换的;而在第二个平面内,旋转角度不变而旋转方向与上述  T 相反。这个可以计算矩阵来验证。

四元数乘积并不能表示四维空间中所有的伸缩旋转,因为它要求两个不变子空间上的旋转角相同。而一般的四维旋转并不要求这一点。所以,这就构成了四元数与二维复数的一个不同点,复数的乘积可以表示复平面上的任意旋转与伸缩变换。

那么四元数能表示三维空间中的任意伸缩和旋转吗?

四、四元数用于三维空间旋转变换

我们要关心的是三维空间上任意的伸缩旋转变换是否可用四元数的乘积来表示,而这一点对四元数来说是完全能够胜任的。

我们把三维空间中的点用实部为零的四元数表示成  v=xi+yj+zk,可以理解为,我们就生活在这个三维空间中。那么用一个四元数  p=d+u 左乘  v 我们得到了什么?

根据上节内容,变换  pv 有两个相互垂直的不变子空间,其中一个是垂直于  u 的平面,是完全在我们的三维空间中的平面,我们可以看得到它。这个平面上的向量  v p 左乘的作用下旋转了一个角度,外加伸缩一个比例;还有一个不变子空间,是与这个平面垂直的平面,即  (1,0,0,0) u 所在的平面,这个平面超越了我们的三维空间,我们无法完全看到它,只能看到它与我们的三维空间的一条交线,就是  u 所在的直线,这条直线上的向量经过变换之后被旋转到了四维空间中,我们看不到了。怎样才能让转到四维空间的向量转回来,同时又不影响与  u 垂直的平面上的向量呢?

设向量  v u 共线,那么  pv 就是  v 向四维空间转过了一个角度  \theta,我们把这个转出去的向量再右乘  \bar p,这样,让左乘  p 转出三维空间的向量经右乘  \bar p 之后按刚才的反方向转动相同的角度,它又转回我们的三维空间,相当于方向没变;而与  u 垂直的二维平面上的向量右乘  \bar p 之后又继续按刚才的方向转了相同的角度,相当于按某个方向转动了  2\theta

这样,我们做变换  Sv=pv \bar p,其中  p=d+u,因为  \bar p=d-u u 乘积可交换,所以  Su=p \bar pu=|p|^2u,所以  u S 作用下方向不变, u 就是这个旋转的转轴。而在与  u 垂直的平面上相当于做了两次同向的旋转,每次转动的角度是  \theta 满足  \cos \theta=\frac{d}{|p|},\sin \theta=\frac{|u|}{|p|},转动的方向是  u_1 u_2,其中  u_1,u_2,u 顺次构成右手坐标系。 S 除了旋转之外还附加了一个伸缩变换,伸缩比例为  |p|^2

如果已知一个三维空间的伸缩旋转的转轴方向、旋转角度和伸缩比例,来求相应的四元数,是比较容易的。设转轴是  (\xi,\eta,\zeta),其中  \xi^2+\eta^2+\zeta^2=1,旋转角度是  \omega,伸缩比例是  T^2,那么根据上段叙述,反求  p=d+u 如下:
我们要让  u 的方向就是转轴方向,即  p=d+a(\xi i+\eta j+\zeta k),其中  d,a 是待定系数。考虑到伸缩比例是  |p|^2=d^2+a^2=T^2,旋转角度满足  \cos \frac{\omega}{2}=\frac{d}{T}, \sin \frac{\omega}{2}=\frac{a}{T},因此  d=T \cos \frac{\omega}{2},a=T \sin \frac{\omega}{2}

如果需要这个旋转的矩阵表示,就是把三个基底  i,j,k 分别代入,求得基底经过变换之后的坐标值,作为矩阵的三个列向量。

这样,我们对四元数的初步总结到此结束。在克莱因的那本《初等数学》中还有一些详细的内容,另外《可视化复分析》中有一些对四元数和莫比乌斯变换的关系的精彩描述,如果以后觉得有必要记录的话再继续写。

9月24日补充:

对三维空间旋转的公式  Sv=pv \bar p 的分析,我最初用的是这个公式:

 pv \bar p=(d^2-|u|^2)v+2d(u \times v)+2\langle u,v \rangle u

这个公式的由来,就是把四元数乘积按乘法加法运算律展开,然后按内外积公式整理,其中用到三个三维向量的外积表示
 a \times b \times c=-\langle b,c \rangle a+\langle a,c \rangle b

把这个结果看成两个部分: d^2v+2d(u \times v) 2 \langle u,v \rangle u-|u|^2v 这两个部分都明显地有几何意义。但是这两部分的几何意义还不足以完美地表征它是个空间旋转,还需要寻找不变子空间才能看出来它是个旋转。

所以到后来我能够解释清楚四元数普通乘积的几何意义之后就把这个公式抛弃掉了。但是这个公式可以更简洁直接地计算出  p 用于三维空间旋转时所对应的矩阵表示。因此今天把它记录在这。

发表评论

电子邮件地址不会被公开。 必填项已用*标注