导数不是神秘运算,而是“此刻变化得多快”
本课使用一维运动,暂不考虑坐标轴旋转。t 是时间(秒),p(t) 是位置(米),括号表示位置随时间变化。两次测量之间的平均速度是
vˉ=Δtp(t+Δt)−p(t).
若位置由两米变到三米,用时半秒,平均速度就是每秒两米。让观察时间间隔越来越小,得到瞬时速度:
v(t)=dtdp=p˙(t)=Δt→0limΔtp(t+Δt)−p(t).
dp/dt 与 p˙ 是同一件事的两种写法。上面的点不是相乘。若 p(t)=ct2,c=1 m/s2,展开平方有
Δtc(t+Δt)2−ct2=2ct+cΔt⟶2ct.
因此 v(t)=2ct,在 t=3 s 时为 6 m/s。再对速度求导得到加速度 a=v˙=2c=2 m/s2。每求一次时间导数,单位多除一个秒。
积分反过来,把许多小段变化累积起来
在很短时间 Δt 内,可用速度乘时间近似位移。把小段相加,并让每段越来越短,就得到积分:
p(t1)−p(t0)=∫t0t1v(t)dt.
t0,t1 是起止时刻,dt 表示被累加的微小时间。积分不是“求平均”;它把速度曲线下的有符号面积变成位移。速度始终为 2 m/s、持续三秒,位移六米。若速度从零匀增到每秒六米,历时三秒,面积是三角形,位移只有九米而非十八米。
积分需要初始值。知道速度为零,只能知道位置不变,不能知道停在何处。因此动力学必须同时给出方程和初始状态。
微分方程:不知道轨迹,但知道轨迹怎么变化
质量 m、推力 F、线性阻尼系数 d 的一维模型是
mv˙=F−dv,v˙=mF−dv,p˙=v.
m 单位 kg,F 单位 N,d 单位 Ns/m,所以 dv 是阻力大小而不是微分符号;这里字母 d 是系数。未知的是整条函数 v(t),不是一个固定数字,因此称为微分方程。它告诉我们:先看当前速度决定阻力,再由净力算加速度,再积累成下一时刻的速度。
不必先学解析解也能做离线预测。令 k 为采样序号,Δt 为固定步长,vk,pk,Fk 为第 k 拍的速度、位置、推力。前向欧拉法把这一拍的变化率当成一小段内不变:
ak=mFk−dvk,vk+1=vk+akΔt,pk+1=pk+vkΔt.
手算:m=10 kg、d=2 Ns/m、Fk=6 N、vk=1 m/s、pk=0 m、Δt=0.1 s。先得阻力二牛顿,再得净力四牛顿,故 ak=0.4 m/s2,下一拍 vk+1=1.04 m/s、pk+1=0.1 m。这里位置用旧速度;若改用新速度,就换了积分算法,不能不加说明地混用。
这是近似而非真实轨迹的精确公式。无推力时,vk+1=(1−dΔt/m)vk。要让误差衰减,必须有 ∣1−dΔt/m∣<1,即 0<Δt<2m/d(假设 m,d>0)。步长过大可能让本来耗能的物体越振越快。更小步长通常减小截断误差,但不消除模型误差和测量噪声。
一阶泰勒近似:用切线预测小变化
对一个在附近足够光滑的函数 h(x),在已知点 x0 附近取小变化 δx=x−x0:
h(x0+δx)≈h(x0)+h′(x0)δx.
h′ 是相对输入 x 的导数,不一定是时间导数。“一阶”表示保留变化量的一次项,丢掉二次及更高次项。例:h(x)=x2、x0=2、δx=0.1,切线预测 4+4(0.1)=4.4;精确值为 2.12=4.41,漏掉的正是 (0.1)2=0.01。变化大时不能假装近似仍准确。
若函数有多个输入,先只改变其中一个、固定其他输入,得到偏导数。把所有偏导数按“输出一行、输入一列”排起来就是雅可比矩阵 H:
h([x1x2])=x12+3x2,H=[2x13],δh≈H[δx1δx2].
这里仅作无量纲数学例子。在 (x1,x2)=(2,1),取变化 (0.1,−0.2),有 δh≈4(0.1)+3(−0.2)=−0.2。原函数值七,预测新值六点八,精确值六点八一。EKF 正是用这种局部关系处理非线性预测与观测;它不是把非线性系统永久改成直线。
自检:变化率、累积和近似分清了吗?
- 00-C1:恒加速度 a=0.5 m/s2、初速度 v0=1 m/s,两秒后速度及位移分别是多少?
- 00-C2:上面的质量阻尼模型下一拍改为零推力,仍从 vk=1 m/s 起步,求欧拉速度。
- 00-C3:用切线估计 3.022,比较精确值。
展开逐步答案
00-C1:v=v0+at=2 m/s;位移 v0t+at2/2=3 m。00-C2:ak=(0−2×1)/10=−0.2 m/s2,故 vk+1=1−0.2(0.1)=0.98 m/s。00-C3:取 x0=3、δx=0.02,得到 9+6(0.02)=9.12;精确值 9.1204,误差为二次项 0.0004。
下一步:方程、矩阵与状态空间。应用入口:动力学与能量、Kalman 滤波。