Math of Quaternion
四元数 是由爱尔兰数学家哈密顿提出定义的 超复数,其有一个 实数部 和 三个虚数部 组成,即 i,j,k,它的提出本意为将 二维复平面 的复数拓展到 三维空间 中
q=w+xi+yj+zk
也可以记为
q=(w,x,y,z)
其中,w 被称为 标量 scalar,(x,y,z) 称为 向量 vector
哈密顿的最大贡献是定义了 哈密顿计算规则,也就是
i2=j2=k2=ijk=−1
四元数的四则运算规则
若有
q1q2=(w1,x1,y1,z1)=w1+x1i+y1j+z1k=(w2,x2,y2,z2)=w2+x2i+y2j+z2k
可以轻松定义 四元数加法
q1+q2=(w1+w2,x1+x2,y1+y2,z1+z2)=w1+w2+(x1+x2)i+(y1+y2)j+(z1+z2)k
定义 四元数乘法 则是重头戏
q1q2=(w1+x1i+y1j+z1k)(w2+x2i+y2j+z2k)=w1w2+w1x2i+w1y2j+w1z2k+=x1w2i+x1x2i2+x1y2ij+x1z2ik+=y1w2j+y1x2ji+y1y2j2+y1z2jk+=z1w2k+z1x2ki+z1y2kj+z1z2k2
我们这里只是将括号展开,注意 虚部 的相乘顺序不能改变,因为四元数乘法不符合交换律
我们展开以后得到了很多 虚部相乘 的项,我们可以依托 哈密顿计算规则 来进行一些简单的分析
ijk两边同时乘 i⟹i2jk−jkjk=−1=−i=−i=i
同理可以分析得到其他虚部相乘的结果,最终形成一个运算表 (相乘顺序为行乘列)
| 虚部 | i | j | k |
|---|
| i | −1 | k | -j |
| j | -k | −1 | i |
| k | j | -i | −1 |
可以注意到,虚部 的相乘 不符合交换律,交换相乘顺序会得到 相反数
有了上面的乘法表以后,我们可以继续化简之前的四元数乘法
q1q2=(w1+x1i+y1j+z1k)(w2+x2i+y2j+z2k)=w1w2+w1x2i+w1y2j+w1z2k+=x1w2i−x1x2+x1y2k−x1z2j+=y1w2j−y1x2k−y1y2+y1z2i+=z1w2k+z1x2j−z1y2i−z1z2=w1w2−x1x2−y1y2−z1z2+=(w1x2+x1w2+y1z2−z1y2)i+=(w1y2−x1z2+y1w2+z1x2)j+=(w1z2+x1y2−y1x2+z1w2)k
显然,四元数乘法不符合交换律
q1q2=q2q1
但是 结合律 依然有效
(q1q2)q3=q1(q2q3)
四元数乘法的矩阵形式
可以发现,四元数的乘法可以由矩阵乘法来表示
q1q2=w1x1y1z1−x1w1z1−y1−y1−z1w1x1−z1y1−x1w1w2x2y2z2=w1w2−x1x2−y1y2−z1z2w1x2+x1w2+y1z2−z1y2w1y2−x1z2+y1w2+z1x2w1z2+x1y2−y1x2+z1w2
也就是说将 q1 写为矩阵形式了
q1=(w1,x1,y1,z1)=w1x1y1z1−x1w1z1−y1−y1−z1w1x1−z1y1−x1w1
也就是说,任意四元数都可以由此写为矩阵形式,以下是一些常见四元数的 矩阵形式
1=(1,0,0,0)=1000010000100001j=(0,0,1,0)=0010000−1−10000100i=(0,1,0,0)=0100−1000000100−10k=(0,0,0,1)=000100100−100−1000
我们可以借助 虚数单位 的 四元数矩阵形式 来验证 哈密顿计算规则,例如
i2ij=0100−1000000100−100100−1000000100−10=−10000−10000−10000−1=−1=0100−1000000100−100010000−1−10000100=000100100−100−1000=k
同理也可验证其他规则
从四元数乘法导出点乘和叉乘
我们已经知道四元数乘法是
q1q2=(w1,x1,y1,z1)(w2,x1,y1,z1)=w1w2−x1x2−y1y2−z1z2w1x2+x1w2+y1z2−z1y2w1y2−x1z2+y1w2+z1x2w1z2+x1y2−y1x2+z1w2
令 a 和 b 分别等于 q1 和 q2 的 向量部分
ab=(x1,y1,z1)=(x2,y2,z2)⟹q1q2=(w1,a)=(w2,b)
那么,我们可以将四元数写为 标量 和 向量 结合的形式
q1q2=(w1,x1,y1,z1)(w2,x2,y2,z2)=(w1,a)(w2,b)
已知
q1q2=w1w2−x1x2−y1y2−z1z2w1x2+x1w2+y1z2−z1y2w1y2−x1z2+y1w2+z1x2w1z2+x1y2−y1x2+z1w2
可以对该式进行重新整理
w1w2−(x1x2+y1y2+z1z2)x1w2+w1x2+y1z2−z1y2y1w2+w1y2+z1x2−x1z2z1w2+w1z2+x1y2−y1x2
-
标量部分
相乘得到的新四元数 q1q2 的 标量部分 是
w1w2−(x1x2+y1y2+z1z2)
注意到,其中 (x1x2+y1y2+z1z2) 等于 q1 和 q2 向量部分 a 和 b 的 各分量相乘,我们定义这种向量各分量相乘的运算为 向量点乘 (向量 内积 inner product),记作
a⋅b=x1x2+y1y2+z1z2
所以新四元数 q1q2 的 标量部分 可以写为
w1w2−(x1x2+y1y2+z1z2)=w1w2−a⋅b
-
向量部分
接着观察 向量部分
x1w2+w1x2+y1z2−z1y2y1w2+w1y2+z1x2−x1z2z1w2+w1z2+x1y2−y1x2
很容易看出,红色部分 和 蓝色部分 可以写成 标量 和 向量 相乘形式
w2a+w1b
然后,我们将剩余的 绿色部分 的计算定义为 向量叉乘 cross product,记为
a×b
所以新四元数 q1q2 的 向量部分 可以写为
w2a+w1b+a×b
最终,我们得到 四元数相乘的向量计算表示法 为
q1q2=(w1w2−a⋅b,w2a+w1b+a×b)aq1q2=(w1,a)=(w2,b) ab=(x1,y1,z1)=(x2,y2,z2) a⋅ba×b=x1x2+y1y2+z1z2=y1z2−z1y2z1x2−x1z2x1y2−y1x2
- 性质1:叉乘所得向量与原向量均垂直
容易得出,a×b 所得到的新向量与 a 和 b 均为 正交 关系,即
a⋅(a×b)=b⋅(a×b)=0
- 性质2:向量叉乘不满足交换律
a×b=b×a
易证
a×b=−(b×a)=−b×a
即 交换叉乘顺序,所得向量大小相同,方向相反 (反交换的性质)
交换子 Commutator
根据 四元数相乘的向量计算表示法 以及 性质2,我们知道,若有四元数
{v1v2=(0,v1)=(0,v2)
则有
{v1v2v2v1=(−v1⋅v2, v1×v2)=(−v1⋅v2, v2×v1)=(−v1⋅v2, −v1×v2)
将它们两个 相加 得到:
v1v2+v2v1v1v2+v2v1=(−v1⋅v2, v1×v2)+(−v1⋅v2, −v1×v2)=(−v1⋅v2−v1⋅v2, v1×v2−v1×v2)=(−2v1⋅v2, 0)=−2v1⋅v2将 0 向量部分省略=−2v1⋅v2⟹v1⋅v2=−21(v1v2+v2v1)
- 注意区分 箭头,带箭头的是 向量,不带箭头的是 四元数
将他们两个 相减 得到:
v1v2−v2v1v1v2−v2v1=(−v1⋅v2, v1×v2)−(−v1⋅v2, −v1×v2)=(−v1⋅v2+v1⋅v2, v1×v2+v1×v2)=(0, 2v1×v2)将 0 标量部分省略=2v1×v2=2v1×v2⟹v1×v2=21(v1v2−v2v1)
- 注意区分 箭头,带箭头的是 向量,不带箭头的是 四元数
我们将形如 ab−ba 这样的计算形式称为 交换子 Commutator,记作 [a,b],所以 v1v2−v2v1 可以写作 [v1,v2],那么上面 相减 的结果也可以写为
v1×v2=21(v1v2−v2v1)=21[v1,v2]
或者也可以等价的认为,四元数 v1 和 v2 的 交换子 Commutator 是他们各自 向量部分叉乘的 2 倍
[v1,v2]=2v1×v2
- 注意 四元数 v1 和 v2 并非任意四元数,而是 标量部分为零 的 四元数
可以观察到有意思的是,对于只在三维中有定义的三维向量叉乘,实际上来源于四维的四元数