四元数学习笔记(二):对偶四元数

1 对偶数的定义

当我们在讨论复数时,我们引入了虚数单位 i i i,并定义 i 2 = − 1 i^2 = -1 i2=1,将实数与虚数组合成为复数。对偶数和复数类似,通常我们将对偶数写作 d = a + b ε d = a+b\varepsilon d=a+bε,其中 d ∈ d , a , b ∈ R d\in \mathbb{d},a,b \in \mathbb{R} dd,a,bR。对偶四元数由两个部分组成:实数部分 a a a,对偶数部分 b ε b\varepsilon bε,也可以写成 d = < a , b > d = <a,b> d=<a,b>,对偶数部分的 ε \varepsilon ε 是一个与实数域 R R R 垂直的维度单位长度,它满足: ε 2 = 0 \varepsilon ^ 2 = 0 ε2=0

2 对偶数基本运算

现规定存在对偶数 d , d 1 , d 2 d,d_1,d_2 d,d1,d2,单元运算使用对偶数 d d d,多元运算使用对偶数 d 1 , d 2 d_1,d_2 d1,d2

其中 d = a + b ε , d 1 = a 1 + b 1 ε , d 2 = a 2 + b 2 ε d = a + b\varepsilon,d_1 = a_1 + b_1\varepsilon, d_2 = a_2 + b_2\varepsilon d=a+bε,d1=a1+b1ε,d2=a2+b2ε

  1. 加减法
    d 1 ± d 2 = ( a 1 + b 1 ε ) ± ( a 2 + b 2 ε ) = ( a 1 ± a 2 ) + ( b 1 ± b 2 ) ε (2.1) \begin{equation} \begin{split} d_1 \pm d_2 &= (a_1 + b_1 \varepsilon) \pm (a_2 + b_2 \varepsilon) \\ & = (a_1 \pm a_2) + (b_1 \pm b_2) \varepsilon \end{split} \end{equation} \tag{2.1} d1±d2=(a1+b1ε)±(a2+b2ε)=(a1±a2)+(b1±b2)ε(2.1)

  2. 乘法
    d 1 d 2 = ( a 1 + b 1 ε ) ( a 2 + b 2 ε ) = a 1 a 2 + ( a 1 b 2 + a 2 b 1 ) ε (2.2) \begin{equation} \begin{split} d_1d_2 &= (a_1 + b_1\varepsilon)(a_2 + b_2\varepsilon) \\ &= a_1a_2 + (a_1b_2 + a_2b_1)\varepsilon \end{split} \end{equation} \tag{2.2} d1d2=(a1+b1ε)(a2+b2ε)=a1a2+(a1b2+a2b1)ε(2.2)

  3. 共轭
    d = ( a + b ε ) d ∗ = ( a − b ε ) (2.3) \begin{equation} \begin{split} d &= (a + b \varepsilon) \\ d^* &= (a - b \varepsilon) \end{split} \end{equation} \tag{2.3} dd=(a+bε)=(abε)(2.3)

  4. 模长或范数
    d = ( a + b ε ) ∣ ∣ d ∣ ∣ = ∣ a ∣ (2.4) \begin{equation} \begin{split} d &= (a + b\varepsilon) \\ ||d|| &= |a| \end{split} \end{equation} \tag{2.4} d∣∣d∣∣=(a+bε)=a(2.4)
    模长为 1 的对偶数即为单位对偶数,即 d = 1 + b ε d = 1+b\varepsilon d=1+bε


  5. d = ( a + b ε ) d − 1 = d ∗ ∣ ∣ d ∣ ∣ 2 = ( a − b ε ) a 2 (2.5) \begin{equation} \begin{split} d &= (a+b\varepsilon) \\ d^{-1} &= \frac{d^*}{||d||^2} = \frac{(a - b\varepsilon)}{a^2} \end{split} \end{equation} \tag{2.5} dd1=(a+bε)=∣∣d2d=a2(abε)(2.5)

  6. 除法

    严格意义来讲,对偶数并没有除法,对于 d 1 / d 2 d_1/d_2 d1/d2 我们只是将它转换成 d 1 ∗ ( d 2 − 1 ) d_1 * (d_2^{-1}) d1(d21) 进行计算:
    d 1 / d 2 = ( a 1 + b 1 ε ) ( a 2 − b 2 ε ) a 2 2 , a 2 ≠ 0 (2.6) d_1/d_2 = \frac{(a_1+b_1\varepsilon)(a_2 - b_2\varepsilon)}{a_2^2},a_2 \neq 0 \tag{2.6} d1/d2=a22(a1+b1ε)(a2b2ε),a2=0(2.6)

3 对偶数的特殊性质

对偶数的性质和四元数非常类似,但是对偶数还是有一些优异的性质,如果我们将它作为函数的参数进行泰勒展开,就发现了对偶数的强大之处。

对于函数 f ( a + b ε ) f(a + b\varepsilon) f(a+bε) ,我们将它在 x = a x = a x=a 处进行泰勒展开:
f ( a + b ε ) = f ( a ) + f ′ ( a ) ( b ε ) + f ′ ′ ( a ) 2 ! ( b ε ) 2 + f ′ ′ ′ ( a ) 3 ! ( b ε ) 3 + . . . + R n ( a ) (2.7) f(a + b\varepsilon) = f(a) + f'(a)(b\varepsilon) + \frac{f''(a)}{2!}(b\varepsilon)^2 + \frac{f'''(a)}{3!}(b\varepsilon)^3 + ...+R_n(a) \tag{2.7} f(a+bε)=f(a)+f(a)(bε)+2!f′′(a)(bε)2+3!f′′′(a)(bε)3+...+Rn(a)(2.7)
ε 2 = 0 \varepsilon^2 = 0 ε2=0 可知,二阶以上的泰勒多项式都为 0。

而泰勒余项 R n ( a ) = f n + 1 ( η ) ( n + 1 ) ! ( ( b ε ) n + 1 ) R_n(a) = \frac{f^{n+1}(\eta)}{(n+1)!}((b\varepsilon)^{n+1}) Rn(a)=(n+1)!fn+1(η)((bε)n+1),其中 η \eta η 为介于 a + b ε a + b\varepsilon a+bε a a a 的数。

因泰勒余项也可以拆成 ε 2 \varepsilon^2 ε2 与某个多项式相乘,所以泰勒余项 R n ( a ) = 0 R_n(a) = 0 Rn(a)=0

由此可以得出一个非常重要的公式
f ( a + b ε ) = f ( a ) + f ′ ( a ) ( b ε ) (2.8) f(a + b\varepsilon) = f(a) + f'(a)(b\varepsilon) \tag{2.8} f(a+bε)=f(a)+f(a)(bε)(2.8)
由上述公式可以推导出一些常见函数的对偶展开:

  1. 正弦函数:
    s i n ( x + y ε ) = s i n ( x ) + c o s ( x ) y ε sin(x+y\varepsilon) = sin(x) + cos(x)y\varepsilon sin(x+yε)=sin(x)+cos(x)yε

  2. 对数函数
    l n ( x + y ε ) = l n ( x ) + y x ε ln(x+y\varepsilon) = ln(x) + \frac{y}{x}\varepsilon ln(x+yε)=ln(x)+xyε

  3. 指数函数
    e x + y ε = e x + y ∗ e x ε e^{x+y\varepsilon} = e^x + y * e^x\varepsilon ex+yε=ex+yexε

我们可以令 a = x , b = 1 a = x, b = 1 a=x,b=1 带入 公式2.8 可得:
f ( x + ε ) = f ( x ) + f ′ ( x ) ε f(x + \varepsilon) = f(x) + f'(x)\varepsilon f(x+ε)=f(x)+f(x)ε
也就是说,对于任意函数 f ( x ) f(x) f(x) ,求其导数,可以直接将 x = x + ε x = x+\varepsilon x=x+ε 带入,展开,得到一个对偶数函数,其中该对偶数函数的对偶部分即是其导数。

4 对偶四元数的定义

对偶四元数可以表示如下:
u = q r + q d ε u = q_r + q_d\varepsilon u=qr+qdε
其中, q r q_r qr q d q_d qd 都是四元数, ε 2 = 0 , ε ≠ 0 \varepsilon^2 = 0, \varepsilon \neq 0 ε2=0,ε=0,下标 r , d r,d r,d 分别表示实部(real)和对偶部(dual)。

对偶四元数还可以写作: u = [ q r , q d ] u = [q_r,q_d] u=[qr,qd]

5 对偶四元数的基本运算

现规定存在对偶四元数 u , u 1 , u 2 u,u_1,u_2 u,u1,u2,单元运算使用对偶数 u u u,多元运算使用对偶数 u 1 , u 2 u_1,u_2 u1,u2

其中 u = q r + q d ε , u 1 = q r 1 + q d 1 ε , u 2 = q r 2 + q d 2 ε u = q_r + q_d\varepsilon,u_1 = q_{r1} + q_{d1}\varepsilon, u_2 = q_{r2} + q_{d2}\varepsilon u=qr+qdε,u1=qr1+qd1ε,u2=qr2+qd2ε

  1. 共轭
    u ∗ = [ q r ∗ , q d ∗ ] (2.9) u^* = [q_r^*, q_d^*] \tag{2.9} u=[qr,qd](2.9)

  2. 对偶共轭
    u ˉ = [ q r , − q d ] (2.10) \bar{u} = [q_r, -q_d] \tag{2.10} uˉ=[qr,qd](2.10)

  3. 复共轭
    u ∗ ˉ = u ˉ ∗ = [ q r ∗ , − q d ∗ ] (2.11) \bar{u^*} = {\bar{u}}^* = [q_r^*, - q_d^*] \tag{2.11} uˉ=uˉ=[qr,qd](2.11)

  4. 模长或范数
    ∣ ∣ u ∣ ∣ = [ ∣ ∣ q r ∣ ∣ , q r ⋅ q d ∣ ∣ q r ∣ ∣ ] = [ ∣ ∣ q r ∣ ∣ , q d q r ∗ + q r q d ∗ 2 ∣ ∣ q r ∣ ∣ ] , ∣ ∣ q r ∣ ∣ ≠ 0 (2.12) \begin{equation} \begin{split} ||u|| &= [||q_r||, \frac{q_r \cdot q_d}{||q_r||}] \\ &=[||q_r||,\frac{q_dq_r^* + q_rq_d^*}{2||q_r||}],||q_r|| \neq 0 \end{split} \end{equation} \tag{2.12} ∣∣u∣∣=[∣∣qr∣∣,∣∣qr∣∣qrqd]=[∣∣qr∣∣,2∣∣qr∣∣qdqr+qrqd],∣∣qr∣∣=0(2.12)
    满足 ∣ ∣ u ∣ ∣ = 1 ||u|| = 1 ∣∣u∣∣=1 的对偶四元数,称为单位对偶四元数,即:
    ∣ ∣ u ∣ ∣ = [ ∣ ∣ q r ∣ ∣ , q r ⋅ q d ∣ ∣ q r ∣ ∣ ] = 1 → { ∣ ∣ q r ∣ ∣ = 1 q r ⋅ q d = 0 ||u|| =[||q_r||, \frac{q_r \cdot q_d}{||q_r||}] = 1 \rightarrow \left\{\begin{matrix} ||q_r|| = 1 \\ q_r \cdot q_d = 0 \end{matrix}\right. ∣∣u∣∣=[∣∣qr∣∣,∣∣qr∣∣qrqd]=1{∣∣qr∣∣=1qrqd=0


  5. u − 1 = u ∗ ∣ ∣ u ∣ ∣ 2 (2.13) u^{-1} = \frac{u^*}{||u||^2} \tag{2.13} u1=∣∣u2u(2.13)

  6. 数乘
    k u = [ k q r , k q d ] (2.14) ku = [kq_r, kq_d] \tag{2.14} ku=[kqr,kqd](2.14)

  7. 加法
    u 1 + u 2 = [ q r 1 + q r 2 , q d 1 + q d 2 ] (2.15) u_1 + u_2 = [q_{r1}+q_{r2}, q_{d1}+q_{d2}] \tag{2.15} u1+u2=[qr1+qr2,qd1+qd2](2.15)

  8. 乘法
    u 1 u 2 = [ q r 1 q r 2 , q r 1 q d 2 + q d 1 q r 2 ] (2.16) u_1u_2= [q_{r1}q_{r2},q_{r1}q_{d2} + q_{d1}q_{r2}] \tag{2.16} u1u2=[qr1qr2,qr1qd2+qd1qr2](2.16)

  9. 共轭性质
    ( u 1 u 2 ) ∗ = u 2 ∗ u 1 ∗ , u 1 u 2 ˉ = u 1 ˉ u 2 ˉ , ( u 1 u 2 ) ∗ ˉ = u 2 ∗ ˉ u 1 ∗ ˉ (2.17) (u_1u_2)^* = u_2^*u_1^*,\bar{u_1u_2} = \bar{u_1}\bar{u_2}, \bar{(u_1u_2)^*} = \bar{u_2^*}\bar{u_1^*} \tag{2.17} (u1u2)=u2u1,u1u2ˉ=u1ˉu2ˉ,(u1u2)ˉ=u2ˉu1ˉ(2.17)

6 纯旋转的对偶四元数

存在一个单位四元数 q q q,将它扩展成对偶四元数 u q = [ q , 0 ] u_q = [q,0] uq=[q,0],则 u q u_q uq 表示一个纯旋转的对偶四元数,它是个单位对偶四元数。

6.1 旋转证明

若某点坐标 [ x , y , z ] [x,y,z] [x,y,z] ,将它扩展成四元数 v 0 = [ 0 , x , y , z ] v_0 = [0,x,y,z] v0=[0,x,y,z],经过单位四元数 q q q 旋转后得到 v 0 ′ v_0' v0,满足 v 0 ′ = q v 0 q ∗ v_0' = qv_0q^* v0=qv0q

如果该四元数 v 0 v_0 v0 经过对偶四元数 u q = [ q , 0 ] u_q = [q,0] uq=[q,0] 旋转后,也能得到一样的值,则可以得证。

我们先把四元数 v 0 v_0 v0 扩展成对偶四元数 v = [ 1 , v 0 ] v = [1,v_0] v=[1,v0]。经过旋转后的新对偶四元数为 v ′ v' v,则应当满足 v ′ = u q v u q ∗ ˉ v' = u_qv\bar{u_q^*} v=uqvuqˉ

其中, u q u_q uq 的双共轭 u q ∗ ˉ = [ u q r ∗ , − u q d ∗ ] = [ q ∗ , 0 ] \bar{u_q^*} = [u_{qr}^*, -u_{qd}^*] = [q^*,0] uqˉ=[uqr,uqd]=[q,0],带入上述公式可得:

v ′ = [ q , 0 ] [ 1 , v 0 ] [ q ∗ , 0 ] v' = [q,0][1,v_0][q^*,0] v=[q,0][1,v0][q,0]
展开可得:
v ′ = [ q , 0 ] [ q ∗ , v 0 q ∗ ] = [ 1 , q v 0 q ∗ ] = [ 1 , v 0 ′ ] v' = [q,0][q^*,v_0q^*] = [1,qv_0q^*] = [1,v_0'] v=[q,0][q,v0q]=[1,qv0q]=[1,v0]
即得证。

7 纯位移的对偶四元数

对于某个位移 ( t 1 , t 2 , t 3 ) (t_1,t_2,t_3) (t1,t2,t3) ,将它扩展成四元数 t = [ 0 , t 1 , t 2 , t 3 ] t = [0,t_1,t_2,t_3] t=[0,t1,t2,t3],它所对应的对偶四元数 u t = [ 1 , 0.5 t ] u_t = [1,0.5t] ut=[1,0.5t],即 u t u_t ut 表示位移为 ( t 1 , t 2 , t 3 ) (t_1,t_2,t_3) (t1,t2,t3) 的对偶四元数。

7.1 纯位移对偶四元数的特殊性质

对偶四元数 u t = [ 1 , 0.5 t ] u_t = [1,0.5t] ut=[1,0.5t],则其对应的双共轭对偶四元数为 u ∗ ˉ = [ 1 , 0.5 t ] ∗ ˉ \bar{u^*} = \bar{[1,0.5t]^*} uˉ=[1,0.5t]ˉ,展开可得:
u t ∗ ˉ = [ 1 , − 0.5 t ] ∗ = [ 1 , − 0.5 t ∗ ] \bar{u_t^*} = [1,-0.5t]^* = [1,-0.5t^*] utˉ=[1,0.5t]=[1,0.5t]
又因为:
t ∗ = [ 0 , − t 1 , − t 2 , − t 3 ] = − t t^* = [0,-t_1,-t_2,-t_3] = -t t=[0,t1,t2,t3]=t
所以:
u t ∗ ˉ = [ 1 , − 0.5 t ∗ ] = [ 1 , 0.5 t ] = u t \bar{u_t^*} = [1,-0.5t^*] = [1,0.5t] = u_t utˉ=[1,0.5t]=[1,0.5t]=ut
由此可见,对偶四元数 u t u_t ut 的双共轭 u t ∗ ˉ \bar{u_t^*} utˉ 等于其本身,且 u t u_t ut 为单位对偶四元数。

7.2 位移证明

设某点坐标 [ x , y , z ] [x,y,z] [x,y,z] ,把它扩展成四元数 v 0 = [ 0 , x , y , z ] v_0 = [0,x,y,z] v0=[0,x,y,z],然后再把四元数 v 0 v_0 v0 扩展成对偶四元数 v = [ 1 , v 0 ] v = [1,v_0] v=[1,v0] 来和 u t u_t ut 进行计算。
u t v u t ∗ ˉ = u t v u t = [ 1 , 0.5 t ] [ 1 , v 0 ] [ 1 , 0.5 t ] = [ 1 , 0.5 t ] [ 1 , v 0 + 0.5 t ] = [ 1 , v 0 + t ] \begin{equation} \begin{split} u_tv\bar{u_t^*} &= u_tvu_t \\ &= [1,0.5t][1,v_0][1,0.5t] \\ &=[1,0.5t][1,v_0 + 0.5t] \\ &= [1,v_0 + t] \end{split} \end{equation} utvutˉ=utvut=[1,0.5t][1,v0][1,0.5t]=[1,0.5t][1,v0+0.5t]=[1,v0+t]
则点 [ x , y , z ] [x,y,z] [x,y,z] 经过变换后的位置为 v 0 + t = [ x + t 1 , y + t 2 , z + t 3 ] v_0 + t = [x+t_1,y+t_2,z+t_3] v0+t=[x+t1,y+t2,z+t3] 得证。

8 旋转位移对应的对偶四元数

先进行旋转变换,再进行位移变换可写作如下:
u t ( u q v u q ∗ ˉ ) u t ∗ ˉ = ( u t u q ) v ( u q ∗ ˉ u t ∗ ˉ ) = ( u t u q ) v ( u q ∗ u t ∗ ˉ ) = ( u t u q ) v ( u q u t ˉ ) ∗ u_t(u_qv\bar{u_q^*})\bar{u_t^*} = (u_tu_q)v(\bar{u_q^*}\bar{u_t^*}) = (u_tu_q)v(\bar{u_q^*u_t^*}) = (u_tu_q)v(\bar{u_qu_t})^* ut(uqvuqˉ)utˉ=(utuq)v(uqˉutˉ)=(utuq)v(uqutˉ)=(utuq)v(uqutˉ)
u = u t u q u = u_tu_q u=utuq ,则 u v u ˉ ∗ uv\bar{u}^* uvuˉ 表示对定点 [ x , y , z ] [x,y,z] [x,y,z] 的位移 + 旋转变换。
u = u t u q = [ 1 , 0.5 t ] [ q , 0 ] = [ q , 0.5 t q ] u= u_tu_q = [1,0.5t][q,0] = [q,0.5tq] u=utuq=[1,0.5t][q,0]=[q,0.5tq]
注意:该对偶四元数依旧为单位对偶四元数。

8.1 已知单位对偶四元数,推出对应的旋转和位移

已知某单位对偶四元数为 u = [ q r , q d ] u = [q_r,q_d] u=[qr,qd],则:

其对应的旋转四元数为: q r q_r qr

其对应的位移四元数为: 2 q d q r ∗ 2q_dq_r^* 2qdqr此处存疑,一说 2 q r ∗ q d 2q_r^*q_d 2qrqd,尚未验证

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对偶四元数是一种扩展了传统四元数的数学概念,它在机器人学和刚体运动学中有广泛的应用。对偶四元数可以用来表示刚体的位姿和运动,同时还可以进行刚体的运动组合和变换计算。 在Matlab中,可以使用Quaternion库来进行对偶四元数的计算和操作。Quaternion库提供了一系列函数来创建、操作和转换对偶四元数。 以下是对偶四元数的一些基本操作和函数: 1. 创建对偶四元数:可以使用quaternion函数来创建对偶四元数,例如: dq = quaternion(w, x, y, z) % 创建一个对偶四元数,其中w、x、y、z分别表示实部和虚部的四个分量 2. 对偶四元数的运算:可以使用+、-、*、/等运算符进行对偶四元数的加减乘除运算,例如: dq1 + dq2 % 对偶四元数的加法 dq1 * dq2 % 对偶四元数的乘法 3. 对偶四元数的共轭:可以使用conj函数来计算对偶四元数的共轭,例如: dq_conj = conj(dq) % 计算对偶四元数的共轭 4. 对偶四元数的单位化:可以使用normalize函数将对偶四元数单位化,例如: dq_normalized = normalize(dq) % 对偶四元数的单位化 5. 对偶四元数的旋转:可以使用rotate函数将一个向量绕某个轴旋转,例如: rotated_vector = rotate(dq, vector) % 将向量vector绕对偶四元数dq表示的轴旋转 6. 对偶四元数的插值:可以使用slerp函数进行对偶四元数的插值,例如: interpolated_dq = slerp(dq1, dq2, t) % 对偶四元数dq1和dq2之间按照参数t进行插值

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值