数学

李群与李代数:连续系统仿真中的几何积分方法

引言

刚体卫星的姿态、机械臂末端位形、分子动力学中刚性水分子的取向,其位形空间都不是欧氏空间,而是旋转群 $SO(3)$ 或刚体运动群 $SE(3)$ 这样的李群。若直接对旋转矩阵的九个元素做 Runge–Kutta 积分,几步之后矩阵便不再正交——数值解悄悄离开了物理上容许的流形,产生虚假的”形状漂移”。欧拉角参数化存在万向锁奇点,四元数需要反复归一化。李群积分方法的思想是在每一步把运动”摊平”到李代数上做积分,再通过指数映射精确回到群流形上,从构造上保证几何约束恒成立。本文介绍其数学基础,并用自由刚体姿态仿真做数值验证。

理论基础

李群与李代数

李群是同时具有光滑流形结构的群。三维旋转群

$$SO(3) = {,R \in \mathbb{R}^{3\times 3} : R^{T}R = I, \det R = 1,}$$

是三维紧流形:九个矩阵元受六个独立约束(正交性),再加行列式条件选出连通分支。在单位元处的切空间即李代数

$$mathfrak{so}(3) = {,widehat{omega} : omega in mathbb{R}^3,},qquad
widehat{omega} = begin{pmatrix} 0 & -omega_3 & omega_2 \ omega_3 & 0 & -omega_1 \ -omega_2 & omega_1 & 0 end{pmatrix}$$

hat 映射把角速度向量映为反对称矩阵,使 $\widehat{\omega},v = \omega \times v$。李括号 $[\widehat{u}, \widehat{v}] = \widehat{u},\widehat{v} - \widehat{v},\widehat{u}$ 恰对应叉乘:

$$[\widehat{u}, \widehat{v}] = \widehat{u \times v}$$

即 $mathfrak{so}(3)$ 作为李代数与 $(\mathbb{R}^3, \times)$ 同构——这正是刚体运动学里叉乘无处不在的代数根源。

指数映射与姿态运动学

李代数到李群的桥梁是指数映射。对 $mathfrak{so}(3)$,矩阵指数有闭式表达(Rodrigues 公式):

$$\exp(\widehat{\omega}) = I + \frac{\sin\theta}{\theta},\widehat{\omega} + \frac{1-\cos\theta}{\theta^2},\widehat{\omega}^{2}, \qquad \theta = |\omega|_2$$

它把”绕轴 $\omega/\theta$ 转 $\theta$ 角”精确实现为旋转矩阵,且恒有 $\exp(\widehat{\omega}) \in SO(3)$——正交性与行列式在机器精度内自动保持。姿态运动学方程写为

$$\dot{R} = R,\widehat{\omega}$$

其中 $\omega$ 是体坐标系下的角速度。关键在于:右乘 $\widehat{\omega}$ 后的 $R\widehat{\omega}$ 仍落在切空间 $T_R SO(3)$ 中,因此一步李群格式 $R_{k+1} = R_k\exp(h,\widehat{\omega}_k)$(Lie–Euler)把更新限制在群上。更一般地,RKMK(Runge–Kutta–Munthe-Kaas)框架先把微分方程通过指数映射局部平凡化到李代数,在李代数(线性空间)上跑任意经典 RK 格式,再指数化回来,可获得与经典格式同阶的精度。相邻两步的复合由 BCH 公式 $\log(e^X e^Y) = X + Y + \frac{1}{2}[X,Y] + \cdots$ 控制,括号项正是非交换性带来的修正。

动力学方程

无力矩自由刚体由 Euler 方程描述:$I\dot{\omega} + \omega \times (I\omega) = 0$,其中 $I$ 为惯量张量。它与姿态运动学 $\dot{R} = R\widehat{\omega}$ 耦合,构成 $SO(3)$ 上的完整动力学系统;空间角动量 $RI\omega$ 守恒是 Noether 定理(旋转对称性)的直接产物,好的几何积分器应长期近似保持它。

数值方法与实现

import numpy as np

def hat(w):
    return np.array([[0.0, -w[2],  w[1]],
                     [w[2],  0.0, -w[0]],
                     [-w[1], w[0],  0.0]])

def exp_so3(w):
    """Rodrigues 公式:so(3) -> SO(3),恒落在旋转群上"""
    th = np.linalg.norm(w)
    W = hat(w)
    if th < 1e-12:
        return np.eye(3) + W
    return np.eye(3) + np.sin(th)/th * W + (1.0 - np.cos(th))/th**2 * (W @ W)

I  = np.diag([1.0, 2.0, 3.0])            # 惯量张量(主轴系)
Ii = np.linalg.inv(I)
def euler_rhs(w):                        # 无力矩 Euler 方程
    return Ii @ np.cross(I @ w, w)

def rk4(f, y, h):
    k1 = f(y); k2 = f(y + h/2*k1); k3 = f(y + h/2*k2); k4 = f(y + h*k3)
    return y + h/6.0*(k1 + 2*k2 + 2*k3 + k4)

def simulate(h, steps, method):
    w = np.array([0.8, 0.2, 0.1]); R = np.eye(3)
    for _ in range(steps):
        w = rk4(euler_rhs, w, h)
        if method == 'lie':              # Lie–Euler:李代数步进 + 指数化
            R = R @ exp_so3(h*w)
        else:                            # 朴素显式 Euler:直接步进矩阵元
            R = R + h*(R @ hat(w))
    det_err  = abs(np.linalg.det(R) - 1.0)
    orth_err = np.linalg.norm(R.T @ R - np.eye(3), ord=np.inf)
    return det_err, orth_err

for method in ('lie', 'naive'):
    d, o = simulate(h=0.05, steps=2000, method=method)
    print(f"{method:5s}  |det R - 1| = {d:.2e},  ||R^T R - I|| = {o:.2e}")

典型结果显示:李群格式的正交性误差停留在 $10^{-15}$ 量级(仅含乘法舍入),而朴素格式的行列式误差随时间线性增长,数百步后 $R$ 已明显”发胖”——对应的物理图像是个伪影:刚体在仿真中缓慢膨胀。

工程案例分析

消费级与工业级 MEMS 陀螺姿态解算是李群积分的日常战场。陀螺直接输出体角速度 $\omega(t)$,姿态更新 $R \leftarrow R\exp(\Delta t,\widehat{\omega})$ 每拍执行一次;高频振动下的圆锥误差(coning error)本质上正是 BCH 公式中被忽略的括号项 $\frac{1}{2}[\widehat{\omega}_i, \widehat{\omega}_j]$,多子样圆锥补偿算法就是在离散层面对它的修正。在视觉/激光 SLAM 中,位形群升级为 $SE(3)$,关键帧之间成百上千个 IMU 测量用李群上的预积分(preintegration)压缩为单个相对位形约束,避免每次线性化时重复积分整条轨迹,这已成为主流后端框架的标准部件。

方法 每步额外代价 群约束保持 长期定性行为
直接积分矩阵元 + 周期 SVD 投影 一次 SVD 投影后恢复,两步间漂移 能量/动量面漂移
四元数 RK + 归一化 一次归一化 由归一化保证 结构间接保持
Lie–Euler / RKMK 一次指数映射 机器精度内恒成立 动量面行为良好
李群变分积分器 中等 恒成立且保辛 长期能量几乎无漂移

分子模拟中刚性水分子(TIP3P 等模型)的取向传播、直升机旋翼的多体动力学、绳索头发的离散杆模型(discrete elastic rods),同样以 $SO(3)$/$SE(3)$ 上的积分为基础构件。航天领域的使用场景同样典型:大型挠性卫星的姿轨耦合仿真要连续运行数千轨道周期,若姿态矩阵以每周期 $10^{-6}$ 的速率漂移,任务末期累积的姿态误差将直接污染指向精度预算——这类长时仿真招标时明确要求”保结构积分器”,正是看中了李群格式误差有界、不随时间线性累积的定性优势。

结论与展望

李群理论把”约束”从需要事后修补的代数条件,改写为积分格式的出发结构:在切空间走一步、指数映射回家。这套语言统一了姿态解算、SLAM 预积分与多体动力学中的诸多工程技巧,并与辛几何结合产生李群变分积分器,实现长期稳定仿真。开放方向包括随机李群积分(带噪 IMU 的严格化处理)、与深度学习耦合的可微分刚体动力学,以及高阶组合格式对 BCH 截断误差的系统性压制。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注