跳转至

微分方程、矩阵指数与状态空间离散化

一篇会成长的笔记。在组合导航里,微分方程是连接物理世界和卡尔曼滤波的桥梁:对方程怎么解、怎么离散化、矩阵指数怎么算、矩阵怎么求导,如果心里没数,看 \(F\) 阵、\(Q\) 阵、状态转移就像看天书。这篇按你喜欢的格式:定义 → 推导 → 物理直觉 → 课程对接 → 常见坑,把这条线彻底打通。

核心要点

  • 惯导运动方程是一阶微分方程组(位置/速度/姿态的导数=各自的变化率)——这正是"状态空间方法"的来源。
  • 线性系统 \(\dot x=Fx+Gw\)解析解\(x(t)=e^{F\Delta t}x_0+\int e^{F(t-\tau)}Gw\,d\tau\)
  • 矩阵指数 \(e^{F\Delta t}\)\(F\) 自由演化 \(\Delta t\) 的状态转移矩阵,是连续↔离散的桥梁。
  • 离散化:\(x_k=F_d x_{k-1}+w_k\),其中 \(F_d=e^{F\Delta t}\)\(w_k\) 协方差 $\(Q_d=\int_0^{\Delta t}e^{F(\Delta t-\tau)}GQ_cG^Te^{F^T(\Delta t-\tau)}\,d\tau \approx GQ_cG^T\Delta t\quad(\text{一阶})\)$
  • 非线性系统:在估计点一阶泰勒展开 → 雅可比 \(F=\partial f/\partial x\) → 线性误差方程 \(\delta \dot x=F\delta x+Gw\) → 才谈得上卡尔曼。
  • 矩阵求导:构造 \(F/H\) 阵、推导卡尔曼增益的笔头功夫(二次型、迹、链式法则)。

全局逻辑图

物理规律(牛顿力学、运动学)
        │  写成微分方程
连续状态方程:ẋ = Fx + Gw
        │  求解(矩阵指数、常数变易法)
连续解:x(t) = e^{FΔt}·x(t0) + ∫e^{F(t-τ)}Gw(τ)dτ
        │  离散化(一个采样周期)
离散状态方程:x_k = F_d·x_{k-1} + w_k
        │  噪声传播
Q_d = ∫e^{F(Δt-τ)}GQcGᵀe^{Fᵀ(Δt-τ)}dτ

一句话:微分方程描述"怎么变",矩阵指数解决"怎么解",离散化解决"卡尔曼怎么用"。


一、微分方程基础(定义)

一句话:微分方程是包含未知函数及其导数的方程,用来描述"量 + 量的变化率"之间的关系。

1.1 常微分方程(ODE)vs 偏微分方程(PDE)

  • ODE:未知函数是一元函数,如 \(\dot x(t)=f(x(t),t)\)惯导解算只用 ODE
  • PDE:未知函数是多元函数,含偏导数(如热传导/波动方程),惯导不涉及。

1.2 阶数

最高阶导数的阶数。

  • 一阶:\(\dot x=f(x,t)\)
  • 二阶:\(\ddot x=f(x,\dot x,t)\)

为什么惯导方程都能写成"一阶":物理上位置导数=速度、速度导数=加速度、姿态导数=角速度,每一条都是一阶。二阶方程 \(\ddot p=a\) 可以降阶成一阶方程组:

\[\begin{cases}\dot p=v\\ \dot v=a\end{cases}\]

这就是状态空间方法的起源:把高阶方程化成一阶方程组,用向量和矩阵表示。

\[\dot{\boldsymbol x}=f(\boldsymbol x,\boldsymbol u)\]

其中 \(\boldsymbol x\) 是状态向量(如 \([\delta p,\delta v,\delta\phi,b_g,b_a]\)),\(\boldsymbol u\) 是输入(如比力、角速度)。

1.3 线性 vs 非线性

类型 形式 解的性质
线性 \(\dot x=Fx+Gu\) 可用矩阵指数解析求解,卡尔曼直接可用
非线性 \(\dot x=f(x,u)\) 形态任意,不能解析求解;惯导方程就是非线性

非线性处理办法:在标称状态处一阶泰勒展开 → 得到线性误差方程 → 再用线性方法(§五)。


二、一阶线性微分方程的解析解(推导)

2.1 标量齐次方程:\(\dot x=ax\)

解:

\[\boxed{x(t)=e^{a(t-t_0)}x(t_0)}\]

推导(分离变量法)

\[\frac{dx}{x}=a\,dt\]

两边积分:

\[\ln|x|=a(t-t_0)+C\ \Rightarrow\ x(t)=e^{a(t-t_0)}x(t_0)\]

2.2 标量非齐次方程:\(\dot x=ax+bu(t)\)

解:

\[\boxed{x(t)=e^{a(t-t_0)}x(t_0)+\int_{t_0}^{t}e^{a(t-\tau)}\,b\,u(\tau)\,d\tau}\]

推导(常数变易法)——"先把输入当 0 求通解,再把常数换成函数":

假设解的形式 \(x(t)=e^{a(t-t_0)}c(t)\),求导:

\[\dot x=ae^{a(t-t_0)}c+e^{a(t-t_0)}\dot c\]

代入原方程,消去左边第一项 \(ae^{a(t-t_0)}c\)

\[e^{a(t-t_0)}\dot c=bu\ \Rightarrow\ \dot c=e^{-a(t-t_0)}bu\]

积分并代回(注意 \(\tau\) 是积分变量、\(t\) 是上限):

\[c(t)=c(t_0)+\int_{t_0}^{t}e^{-a(\tau-t_0)}bu(\tau)\,d\tau\]
\[x(t)=e^{a(t-t_0)}x(t_0)+\int_{t_0}^{t}e^{a(t-\tau)}bu(\tau)\,d\tau\quad\checkmark\]

2.3 矩阵情形(惯导真正用的)

把标量换成矩阵:

\[\dot x=Fx+Gw\]

解(乘号顺序不能乱\(F\)\(G\) 不可交换):

\[\boxed{x(t)=e^{F(t-t_0)}x(t_0)+\int_{t_0}^{t}e^{F(t-\tau)}Gw(\tau)\,d\tau}\]

推导完全照搬常数变易法

  1. 先求齐次解 \(x_h(t)=e^{F(t-t_0)}x(t_0)\)(验证:\(\dfrac{d}{dt}e^{Ft}=Fe^{Ft}\));
  2. \(x(t)=e^{F(t-t_0)}c(t)\),求导代入,得 \(\dot c=e^{-F(t-t_0)}Gw\)
  3. 积分再代回,保序:\(e^{F(t-\tau)}\) 左乘 \(G\)\(w\) 在最右。

物理直觉:第一项 = 初始状态自由演化;第二项 = 输入/噪声在历史各时刻的贡献,被系统动力学"记忆"并叠加到终点。 这就是"历史每一瞬间的扰动都要乘上转移矩阵才能到达现在"的积分核。


三、矩阵指数:解法、性质与计算

3.1 定义

\[e^{F\Delta t}=I+F\Delta t+\frac{(F\Delta t)^2}{2!}+\frac{(F\Delta t)^3}{3!}+\cdots\]

3.1.1 为什么这个级数"在 0 处展开"?

你可能会问:凭什么展开点是 \(x=0\),而不是别的?

这个级数其实是矩阵值函数 \(\Phi(x)=e^{Fx}\)\(x=0\) 处的泰勒(麦克劳林)展开,把 \(x=\Delta t\) 代进去就得到 \(e^{F\Delta t}\)。选 0 不是任意的,有三个原因:

  1. 它是定义本身:矩阵指数就是由这条幂级数定义的(对标量 \(e^x=1+x+x^2/2!+\cdots\))。定义式天然是"在 0 处展开"的形式。
  2. 0 是唯一一个"答案已知"的点:当 \(x=0\)(时间没流过),任何系统都"没动",所以 \(e^{F\cdot 0}=I\)——单位阵。不管 \(F\) 长什么样,转移矩阵在零时刻恒等于 \(I\),这是所有状态转移矩阵共有的"锚点"。拿别的点 \(x=a\) 展开,你反而得先知道 \(e^{Fa}\) 才能写系数,没意义。
  3. 它永远收敛:对矩阵来说 \(e^{Fx}\) 是整函数(级数对一切 \(F\)、一切 \(x\) 都收敛),所以在 0 处展开既合法又最干净,再代 \(x=\Delta t\) 即可。

一句话:"在 0 展开"是因为 0 是转移矩阵唯一天然等于 \(I\) 的点,而矩阵指数本来就是按这个级数定义的。

3.2 性质(背下来)

性质 公式
单位元 \(e^{F\cdot 0}=I\)
半群 \(e^{F(t_1+t_2)}=e^{Ft_1}e^{Ft_2}\)(同一 \(F\)
可逆 \((e^{Ft})^{-1}=e^{-Ft}\)
微分 \(\dfrac{d}{dt}e^{Ft}=Fe^{Ft}=e^{Ft}F\)(与 \(F\) 可交换)
相加(仅当可交换) \(F_1F_2=F_2F_1\ \Rightarrow\ e^{F_1+F_2}=e^{F_1}e^{F_2}\)
相加(一般情况) \(e^{F_1+F_2}\neq e^{F_1}e^{F_2}\) ⚠️

矩阵不可交换是最容易踩的坑

导数篇里 \(e^{a+b}=e^ae^b\) 对标量永远成立;对矩阵只有 \(F_1,F_2\) 可交换时才成立。惯导里把姿态转矩阵与速度耦合分开处理、把 \(F\) 分块积分,处处都是因为"不能随便交换"。

3.3 计算方法(四种)

方法 1:泰勒展开——\(F\) 幂零或 \(\Delta t\) 很小时合适。

例:\(F=\begin{bmatrix}0&1\\0&0\end{bmatrix}\)\(F^2=0\),所以

\[e^{F\Delta t}=I+F\Delta t=\begin{bmatrix}1&\Delta t\\0&1\end{bmatrix}\]

方法 2:对角化——\(F=V\Lambda V^{-1}\)\(\Lambda=\mathrm{diag}(\lambda_1,\dots,\lambda_n)\)

\[e^{F\Delta t}=V e^{\Lambda\Delta t}V^{-1},\qquad e^{\Lambda\Delta t}=\mathrm{diag}(e^{\lambda_1\Delta t},\dots,e^{\lambda_n\Delta t})\]

方法 3:拉普拉斯变换

\[e^{F\Delta t}=\mathcal L^{-1}\{(sI-F)^{-1}\}\]

方法 4:Cayley-Hamilton 定理——\(e^{F\Delta t}\) 可写成 \(I,F,F^2,\dots,F^{n-1}\) 的线性组合(系数由特征多项式定)。

3.4 数值例子:简谐振子(二维)

\[F=\begin{bmatrix}0&1\\-\omega^2&0\end{bmatrix}\ \Rightarrow\ \lambda=\pm j\omega\]

对角化/级数可得:

\[e^{F\Delta t}=\begin{bmatrix}\cos\omega\Delta t & \frac{1}{\omega}\sin\omega\Delta t\\ -\omega\sin\omega\Delta t & \cos\omega\Delta t\end{bmatrix}\]

物理意义:位置与速度随时间振荡,矩阵指数给出振荡的相位和幅度。惯导里的舒勒振荡(84.4min)就是同款结构——只是耦合矩阵更复杂,见 09 纯惯导误差传播

3.5 物理意义总结

\(e^{F\Delta t}\) 表示状态在 \(\Delta t\) 时间内在系统动力学 \(F\) 支配下的自由演化转移矩阵。对惯导:它就是"上一个采样时刻的误差状态,线性推进到这一个采样时刻"的那张矩阵——离散后的 \(F_d\)


四、连续 → 离散:\(F_d\)\(Q_d\)(课程核心推导)

4.1 离散状态方程

对连续 \(\dot x=Fx+Gw\) 在一个采样周期 \([t_{k-1},t_k]\) 上积分(\(\Delta t=t_k-t_{k-1}\)):

\[x_k=e^{F\Delta t}x_{k-1}+\int_{t_{k-1}}^{t_k}e^{F(t_k-\tau)}Gw(\tau)\,d\tau\]

定义

\[F_d=e^{F\Delta t},\qquad w_{k-1}=\int_{t_{k-1}}^{t_k}e^{F(t_k-\tau)}Gw(\tau)\,d\tau\]

于是离散状态方程:

\[\boxed{x_k=F_d\,x_{k-1}+w_{k-1}}\]

4.2 离散噪声协方差 \(Q_d\)(完整推导)

假设\(w(t)\) 是连续白噪声,\(\mathbb E[w(t)]=0\)\(\mathbb E[w(t)w(\tau)^T]=Q_c\,\delta(t-\tau)\)\(Q_c\) 为连续噪声强度。

\(w_{k-1}\) 的协方差:

\[Q_d=\mathbb E[w_{k-1}w_{k-1}^T]=\mathbb E\left[\int\int e^{F(t_k-\tau_1)}Gw(\tau_1)\,w(\tau_2)^T G^T e^{F^T(t_k-\tau_2)}\,d\tau_1 d\tau_2\right]\]

期望穿过积分,只剩白噪声的相关函数 \(\mathbb E[w(\tau_1)w(\tau_2)^T]=Q_c\delta(\tau_1-\tau_2)\)\(\delta\) 把二重积分压成一重:

\[\boxed{Q_d=\int_0^{\Delta t}e^{F(\Delta t-\tau)}GQ_cG^Te^{F^T(\Delta t-\tau)}\,d\tau}\]

4.3 一阶近似(工程最常用)

\(\Delta t\) 很小,\(e^{F(\Delta t-\tau)}\approx I\)

\[Q_d\approx GQ_cG^T\Delta t\]

这就是卡尔曼代码里 Qd = G*Qc*G'*dt 的来源。

4.4 精确计算例子:一维位置-速度(\(Q_d\) 的完整来历)

\[F=\begin{bmatrix}0&1\\0&0\end{bmatrix},\qquad G=\begin{bmatrix}0\\1\end{bmatrix}\ \Rightarrow\ e^{F\tau}G=\begin{bmatrix}\tau\\1\end{bmatrix}\]
\[Q_d=Q_c\int_0^{\Delta t}\begin{bmatrix}\tau\\1\end{bmatrix}\begin{bmatrix}\tau&1\end{bmatrix}d\tau =Q_c\begin{bmatrix}\frac{\Delta t^3}{3} & \frac{\Delta t^2}{2}\\ \frac{\Delta t^2}{2} & \Delta t\end{bmatrix}\]

4.5 \(Q_d\) 的物理意义

  • \(Q_{vv}=Q_c\Delta t\):速度方差与时间成正比(白噪声积分一次);
  • \(Q_{pp}=Q_c\Delta t^3/3\)位置方差与时间的立方成正比(再积分一次)——纯惯导位置误差为什么必然发散,就写在这;
  • \(Q_{pv}=Q_c\Delta t^2/2\):位置与速度因为同源噪声而相关(协方差非零)。

直觉:加速度噪声积分一次得速度、再积分一次得位置;位置和速度来自同一个噪声源,所以相关。\(Q_d\) 不是对角阵该有的样子——它们天然互相耦合。


五、非线性线性化:从 \(f(x)\)\(F\)(雅可比)

5.1 为什么需要线性化

惯导方程 \(\dot x=f(x,u)\) 是非线性的,卡尔曼只认线性。方法:在标称状态 \(\hat x\)一阶泰勒展开

\[f(x)\approx f(\hat x)+\underbrace{\left.\frac{\partial f}{\partial x}\right|_{\hat x}}_{F(\hat x)}(x-\hat x)\]

其中雅可比矩阵

\[F_{ij}=\frac{\partial f_i}{\partial x_j}\]

岔路口:F/G 是从哪来的?和"怎么解"是两回事 学完 §二 的常数变易法,容易误以为"要求 F、G 也得走一遍 ODE 求解"。其实常数变易法求的是"解 \(x(t)\)",不是矩阵 F、G。F、G 的来源只有一步——把物理规律写成一阶状态方程: - 线性系统 \(\dot x=Fx+Gu\):F、G 就是状态、输入前的系数矩阵,从牛顿/运动学方程直接"读"出来(经典力学写成一阶形式即可,不需要任何积分)。例如 \(\dot p=v,\ \dot v=a\) 拼成 $\(\begin{bmatrix}\dot p\\ \dot v\end{bmatrix}=\begin{bmatrix}0&1\\0&0\end{bmatrix}\begin{bmatrix}p\\ v\end{bmatrix}+\begin{bmatrix}0\\ 1\end{bmatrix}a\)$ F、G 一眼读出,根本不用解微分方程。 - 非线性系统 \(\dot x=f(x,u)\):F 不再是常数矩阵,而是在当前估计点\(f\) 求雅可比 \(F=\partial f/\partial x\)(见上)。

一句话:线性 → F/G 是常数系数,直接读;非线性 → F 是标称点的雅可比。常数变易法 / 矩阵指数只负责"已知 F、G 后怎么把解写出来"。

5.2 误差方程

定义误差 \(\delta x=x-\hat x\),则

\[\boxed{\delta\dot x=F(\hat x)\,\delta x+Gw}\]

这就是"误差状态方程"——ESKF 的全部家当(详见 11 EKF 与 ESKF)。\(F(\hat x)\) 依赖当前估计,所以是线性时变的,每个采样周期都要重新算。

5.3 惯导实例:速度方程对状态的偏导

速度微分方程(n 系投影):

\[\dot v^n=C_b^n f^b-(2\omega_{ie}^n+\omega_{en}^n)\times v^n+g^n\]
  • 对姿态误差 \(\delta\psi\) 求偏导:\(\dfrac{\partial \dot v^n}{\partial \delta\psi}=-[f^n]_\times\)(比力的反对称阵);
  • 对速度误差 \(\delta v^n\) 求偏导:\(\dfrac{\partial \dot v^n}{\partial \delta v^n}=-(2\omega_{ie}^n+\omega_{en}^n)\times\)(哥氏+牵连项)。

这些正是 \(F\) 阵里的块——怎么求,见下一节矩阵求导


六、矩阵求导速查(构造 F/H、推卡尔曼增益的笔头功夫)

一句话:标量微积分只管"数",组合导航里处处是"向量/矩阵对向量/矩阵求导"——工具是雅可比矩阵微分的链式法则

6.1 三个基本类型

求导对象 结果 说明
标量 \(c\) 对向量 \(x\) 梯度向量 \(\dfrac{\partial c}{\partial x}\) 各分量偏导排成列
向量 \(y\) 对向量 \(x\) 雅可比矩阵 \(J_{ij}=\dfrac{\partial y_i}{\partial x_j}\) 每行一个输出分量的梯度
标量 \(c\) 对矩阵 \(X\) 某矩阵 \(\dfrac{\partial c}{\partial X}\) 逐元偏导排成同型矩阵

6.2 复合法则(链式法则,雅可比乘法)

\(y=g(u)\)\(u=h(x)\),则

\[\frac{\partial y}{\partial x}=\frac{\partial y}{\partial u}\,\frac{\partial u}{\partial x}\qquad(\text{雅可比乘积,注意维度匹配})\]

惯导里的典型链条:姿态误差 \(\delta\phi\) → 姿态矩阵 \(C_b^n\) → 比力投影 \(C_b^n f^b\) → 速度方程。写 \(F\) 阵 = 把这条链逐环求导再用链式乘积串起来。

6.3 二次型与线性形式(最高频,必须背)

形式 导数(对 \(x\)
\(c=a^Tx=x^Ta\) \(a\)
\(c=x^TAx\)\(A\) 一般) \((A+A^T)x\)
\(c=x^TAx\)\(A\) 对称,如协方差) \(2Ax\)
\(y=Ax\) \(\partial y/\partial x=A\)
\(c=x^Tx=\lVert x\rVert^2\) \(2x\)

卡尔曼里的出现位置

  • 马氏距离 \(d^2=(z-Hx)^TS^{-1}(z-Hx)\)\(x\) 求导 → 最小化就是加权最小二乘,解得 \(\hat x_{LS}\)
  • 协方差传播 \(P=FPF^T+Q\) 两边都是矩阵乘法产物;
  • 推导卡尔曼增益:代价 \(J=\mathrm{tr}(P_k^+)\)(或误差方差),对增益矩阵 \(K\) 求导并令导数为零——这就是增益公式 \(K=PH^T(HPH^T+R)^{-1}\) 的由来(见「最小二乘 → 卡尔曼」篇预告)。

6.4 迹技巧(对矩阵求导最实用的快捷键)

对"标量 = 矩阵运算的迹"的形式,用迹的循环性质把目标拎出来:

\[\mathrm{tr}(ABC)=\mathrm{tr}(BCA)=\mathrm{tr}(CAB)\]

常用公式:

\[\frac{\partial \mathrm{tr}(AX)}{\partial X}=A^T,\qquad \frac{\partial \mathrm{tr}(X^TAX)}{\partial X}=(A+A^T)X\]

推导卡尔曼增益时,\(J=\mathrm{tr}(P^+)=\mathrm{tr}[(I-KH)P^-(I-KH)^T+KRK^T]\) 展开后正是这样逐项求导的。

6.5 微分法(终极武器)

对复杂的矩阵表达式,直接对矩阵求导容易乱;更稳的套路是先对表达式取微分(线性化),再"除以" \(dx\)

\[d(XY)=dX\,Y+X\,dY,\qquad d(X^{-1})=-X^{-1}dX\,X^{-1}\]

把标量表达式 \(c\) 写成 \(dc=\mathrm{tr}(A\,dX)\) 的形式,则 \(\dfrac{\partial c}{\partial X}=A^T\)ESKF/旋转矩阵对时间求导(\(\dot C=C[\omega]_\times\))本质就是这条


七、从物理到卡尔曼:完整链路 + 代码对应

7.1 完整链路

物理方程:
  ṗ = v
  v̇ = C_bⁿ f^b − (2ω_ie + ω_en)×v + gⁿ
  q̇ = ½ q ⊗ [0, ω_nb^b]
        │  定义误差状态(线性化)
误差方程:δẋ = F δx + Gw
        │  离散化(矩阵指数)
离散误差方程:δx_k = F_d δx_{k-1} + w_k
        │  噪声传播
Q_d = ∫₀^Δt e^{F(Δt-τ)} G Q_c Gᵀ e^{Fᵀ(Δt-τ)} dτ
        │  卡尔曼
预测:P⁻ = F_d P⁺ F_dᵀ + Q_d
更新:K = P⁻Hᵀ(HP⁻Hᵀ + R)⁻¹

7.2 代码对应(15 态 ESKF 示意,PSINS/固件风格)

% —— 连续 F 阵(15 态:δp,δv,δφ,bg,ba;n 系投影)——
F = zeros(15,15);
F(1:3,4:6)  = eye(3);            % 位置 ← 速度
F(4:6,7:9)  = -skew(fn);         % 速度 ← 姿态(-比力叉乘)
F(4:6,13:15)= Cbn;               % 速度 ← 加计零偏
F(7:9,10:12)= -Cbn;              % 姿态 ← 陀螺零偏
F(10:12,10:12) = -1e-4*eye(3);   % 陀螺零偏一阶 GM 相关时间
F(13:15,13:15) = -1e-4*eye(3);   % 加计零偏一阶 GM

% —— 离散化 ——
Fd = eye(15) + F*dt + 0.5*(F*dt)^2;   % 二阶近似(Δt 小可只用一阶)
Qd = G*Qc*G'*dt;                      % 一阶近似(详见 §四.3)

与仓库现有笔记的衔接

这一套在 08 kffk F阵离散化(line-by-line)(PSINS \(F\) 构造与离散)、06 机械编排方程(连续运动方程)、11 EKF 与 ESKF(误差状态线性化)里都是主咖。这篇给的是它们共同的地基:连续方程到底怎么变成代码里的 \(F_d\)\(Q_d\)


八、常见坑

  1. 矩阵不可交换\(e^{F_1+F_2}\neq e^{F_1}e^{F_2}\)(除非可交换)——分块、重排、简化前先问"顺序换不换得动"。
  2. 一阶近似在 \(\Delta t\) 大时误差大:高频 IMU(\(\Delta t\) 小)一阶够;低频/慢采样要用二阶或精确矩阵指数。
  3. \(Q_d\) 直接拍:工程常见错误是直接给个对角阵。严格做法是 §四.2 的积分;至少用 \(GQ_cG^T\Delta t\) 且保留耦合项。
  4. \(Q_c\)\(Q_d\) 单位混淆\(Q_c\) 单位是 状态²/时间,\(Q_d\) 是 状态²,差一个 \(\Delta t\)——混了滤波器几秒内发散。
  5. 连续 \(F\) 与离散 \(F_d\) 混淆\(F\) 连续、单位 1/s;\(F_d=e^{F\Delta t}\) 离散、无量纲。代码里写的多是 \(F_d\),别把 \(F\) 直接乘进预测步。
  6. 线性化点要取对\(F=\partial f/\partial x\) 必须在当前估计点求值(线性时变),不是初始点。ESKF 里每周期重算 \(F\) 就是这个原因。
  7. 忘记链式求导的维度:雅可比乘法的内/外层维度不匹配,是写 \(F/H\) 阵最常见的编译级错误。

九、总结

一条主线

\[\text{物理方程}\ \to\ \text{连续状态方程}\ \to\ \text{矩阵指数求解}\ \to\ \text{离散化}\ \to\ \text{卡尔曼滤波}\]

三个核心公式

公式 含义
\(x(t)=e^{F(t-t_0)}x_0+\int e^{F(t-\tau)}Gw\,d\tau\) 连续时间解析解
\(F_d=e^{F\Delta t}\) 离散状态转移矩阵
\(Q_d=\int_0^{\Delta t}e^{F(\Delta t-\tau)}GQ_cG^Te^{F^T(\Delta t-\tau)}d\tau\) 离散过程噪声协方差

一句话:微分方程描述物理规律;矩阵指数给出解析解;离散化让卡尔曼滤波能用——\(Q_d\) 是噪声穿过系统动力学传播后的结果,不是常数表里查出来的。

关联

外链 Wiki