学习笔记搜索

00.2|从每秒变化开始:导数、积分与一拍预测

导数不是神秘运算,而是“此刻变化得多快”

本课使用一维运动,暂不考虑坐标轴旋转。tt 是时间(秒),p(t)p(t) 是位置(米),括号表示位置随时间变化。两次测量之间的平均速度是

vˉ=p(t+Δt)−p(t)Δt.\bar v=\frac{p(t+\Delta t)-p(t)}{\Delta t}.

若位置由两米变到三米,用时半秒,平均速度就是每秒两米。让观察时间间隔越来越小,得到瞬时速度:

v(t)=dpdt=p˙(t)=lim⁡Δt→0p(t+Δt)−p(t)Δt.v(t)=\frac{dp}{dt}=\dot p(t) =\lim_{\Delta t\to0}\frac{p(t+\Delta t)-p(t)}{\Delta t}.

dp/dtdp/dt 与 p˙\dot p 是同一件事的两种写法。上面的点不是相乘。若 p(t)=ct2p(t)=c t^2,c=1 m/s2c=1\ \mathrm{m/s^2},展开平方有

c(t+Δt)2−ct2Δt=2ct+cΔt⟶2ct.\frac{c(t+\Delta t)^2-ct^2}{\Delta t} =2ct+c\Delta t\longrightarrow 2ct.

因此 v(t)=2ctv(t)=2ct,在 t=3 st=3\ \mathrm s 时为 6 m/s6\ \mathrm{m/s}。再对速度求导得到加速度 a=v˙=2c=2 m/s2a=\dot v=2c=2\ \mathrm{m/s^2}。每求一次时间导数,单位多除一个秒。

积分反过来,把许多小段变化累积起来

在很短时间 Δt\Delta t 内,可用速度乘时间近似位移。把小段相加,并让每段越来越短,就得到积分:

p(t1)−p(t0)=∫t0t1v(t) dt.p(t_1)-p(t_0)=\int_{t_0}^{t_1}v(t)\,dt.

t0,t1t_0,t_1 是起止时刻,dtdt 表示被累加的微小时间。积分不是“求平均”;它把速度曲线下的有符号面积变成位移。速度始终为 2 m/s2\ \mathrm{m/s}、持续三秒,位移六米。若速度从零匀增到每秒六米,历时三秒,面积是三角形,位移只有九米而非十八米。

积分需要初始值。知道速度为零,只能知道位置不变,不能知道停在何处。因此动力学必须同时给出方程和初始状态。

微分方程:不知道轨迹,但知道轨迹怎么变化

质量 mm、推力 FF、线性阻尼系数 dd 的一维模型是

mv˙=F−dv,v˙=F−dvm,p˙=v.m\dot v=F-dv, \qquad \dot v=\frac{F-dv}{m}, \qquad \dot p=v.

mm 单位 kg,FF 单位 N,dd 单位 N s/m\mathrm{N\,s/m},所以 dvdv 是阻力大小而不是微分符号;这里字母 dd 是系数。未知的是整条函数 v(t)v(t),不是一个固定数字,因此称为微分方程。它告诉我们:先看当前速度决定阻力,再由净力算加速度,再积累成下一时刻的速度。

不必先学解析解也能做离线预测。令 kk 为采样序号,Δt\Delta t 为固定步长,vk,pk,Fkv_k,p_k,F_k 为第 kk 拍的速度、位置、推力。前向欧拉法把这一拍的变化率当成一小段内不变:

ak=Fk−dvkm,vk+1=vk+akΔt,pk+1=pk+vkΔt.a_k=\frac{F_k-dv_k}{m},\qquad v_{k+1}=v_k+a_k\Delta t,\qquad p_{k+1}=p_k+v_k\Delta t.

手算:m=10 kgm=10\ \mathrm{kg}、d=2 N s/md=2\ \mathrm{N\,s/m}、Fk=6 NF_k=6\ \mathrm N、vk=1 m/sv_k=1\ \mathrm{m/s}、pk=0 mp_k=0\ \mathrm m、Δt=0.1 s\Delta t=0.1\ \mathrm s。先得阻力二牛顿,再得净力四牛顿,故 ak=0.4 m/s2a_k=0.4\ \mathrm{m/s^2},下一拍 vk+1=1.04 m/sv_{k+1}=1.04\ \mathrm{m/s}、pk+1=0.1 mp_{k+1}=0.1\ \mathrm m。这里位置用旧速度;若改用新速度,就换了积分算法,不能不加说明地混用。

这是近似而非真实轨迹的精确公式。无推力时,vk+1=(1−dΔt/m)vkv_{k+1}=(1-d\Delta t/m)v_k。要让误差衰减,必须有 ∣1−dΔt/m∣<1|1-d\Delta t/m|<1,即 0<Δt<2m/d0<\Delta t<2m/d(假设 m,d>0m,d>0)。步长过大可能让本来耗能的物体越振越快。更小步长通常减小截断误差,但不消除模型误差和测量噪声。

一阶泰勒近似:用切线预测小变化

对一个在附近足够光滑的函数 h(x)h(x),在已知点 x0x_0 附近取小变化 δx=x−x0\delta x=x-x_0:

h(x0+δx)≈h(x0)+h′(x0)δx.h(x_0+\delta x)\approx h(x_0)+h'(x_0)\delta x.

h′h' 是相对输入 xx 的导数,不一定是时间导数。“一阶”表示保留变化量的一次项,丢掉二次及更高次项。例:h(x)=x2h(x)=x^2、x0=2x_0=2、δx=0.1\delta x=0.1,切线预测 4+4(0.1)=4.44+4(0.1)=4.4;精确值为 2.12=4.412.1^2=4.41,漏掉的正是 (0.1)2=0.01(0.1)^2=0.01。变化大时不能假装近似仍准确。

若函数有多个输入,先只改变其中一个、固定其他输入,得到偏导数。把所有偏导数按“输出一行、输入一列”排起来就是雅可比矩阵 HH:

h ⁣([x1x2])=x12+3x2,H=[2x13],δh≈H[δx1δx2].h\!\left(\begin{bmatrix}x_1\\x_2\end{bmatrix}\right)=x_1^2+3x_2, \qquad H=\begin{bmatrix}2x_1&3\end{bmatrix}, \qquad \delta h\approx H\begin{bmatrix}\delta x_1\\\delta x_2\end{bmatrix}.

这里仅作无量纲数学例子。在 (x1,x2)=(2,1)(x_1,x_2)=(2,1),取变化 (0.1,−0.2)(0.1,-0.2),有 δh≈4(0.1)+3(−0.2)=−0.2\delta h\approx4(0.1)+3(-0.2)=-0.2。原函数值七,预测新值六点八,精确值六点八一。EKF 正是用这种局部关系处理非线性预测与观测;它不是把非线性系统永久改成直线。

自检:变化率、累积和近似分清了吗?

  1. 00-C1:恒加速度 a=0.5 m/s2a=0.5\ \mathrm{m/s^2}、初速度 v0=1 m/sv_0=1\ \mathrm{m/s},两秒后速度及位移分别是多少?
  2. 00-C2:上面的质量阻尼模型下一拍改为零推力,仍从 vk=1 m/sv_k=1\ \mathrm{m/s} 起步,求欧拉速度。
  3. 00-C3:用切线估计 3.0223.02^2,比较精确值。
展开逐步答案

00-C1:v=v0+at=2 m/sv=v_0+at=2\ \mathrm{m/s};位移 v0t+at2/2=3 mv_0t+at^2/2=3\ \mathrm m。00-C2:ak=(0−2×1)/10=−0.2 m/s2a_k=(0-2\times1)/10=-0.2\ \mathrm{m/s^2},故 vk+1=1−0.2(0.1)=0.98 m/sv_{k+1}=1-0.2(0.1)=0.98\ \mathrm{m/s}。00-C3:取 x0=3x_0=3、δx=0.02\delta x=0.02,得到 9+6(0.02)=9.129+6(0.02)=9.12;精确值 9.12049.1204,误差为二次项 0.00040.0004。

下一步:方程、矩阵与状态空间。应用入口:动力学与能量、Kalman 滤波。

本章编程练习

查看全部练习

仅保存在当前浏览器,可在学习记录页导出。