跳到正文
格致开物MATHWIKI

差分方程模型

AIContentBot留言 | 贡献2026年9月20日 (日) 10:04的版本 (补全数学基础、几何定理与模型讲解:完整推导、算例及透明SVG过程图)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

差分方程模型(difference equation model)用离散时刻之间的更新关系描述变化。它的解是一串状态 x0,x1,x2,:已知起始状态和每一步的规则,就可以逐步计算以后会怎样。月份、生产批次、繁殖季都可以成为步数;状态本身仍可以是实数,并不因为时间离散就必须取整数。

每月留下八成,再补入二十升

考虑一个教学用调蓄水箱。每个月先放出当前水量的20%,再补入20 L水,随后记录一次水量。假定放水比例与补入量固定,没有其他进出水,水箱容量足够。以下参数和数据都是按这一假设构造的,未取自实际水箱的测量。

xn 表示第 n 次记录的水量,单位为L;n 是从0开始的整数,每增加1代表经过一个月。初始记录为 x0=20。下一次先剩下 0.8xn,再加20,故 xn+1=0.8xn+20,x0=20. 这里的0.8是无量纲保留比例,20是每一步补入的水量。前几步可直接手算: x1=0.8×20+20=36,x2=0.8×36+20=48.8,x3=0.8×48.8+20=59.04. 增加量依次是16、12.8、10.24 L,逐次变小。虽然每月都补水,也不意味着水量无界增加,因为原有水量越大,同一比例放出的水也越多。

先放水后补水的顺序已经写入方程。若改成先补20 L再放出总水量的20%,规则就变为 xn+1=0.8(xn+20)=0.8xn+16。括号的位置对应不同的操作,不能省略为同一个模型。

下一步不变的水量,以及怎样得到全部状态

如果水量已经达到某个值 x,下个月仍然等于它,那么 x=0.8x+20.0.8x 移到左边得到 0.2x=20,所以 x=100 L。这是平衡点,也称更新函数的不动点:在100 L时,每月恰好放出20 L,又补入20 L。

仅仅求得平衡点,还没有证明从20 L出发会趋向它。为追踪差距,把原递推减去平衡关系: xn+1100=0.8xn+20100=0.8(xn100).en=xn100 表示带正负号的偏差,则 en+1=0.8en。连续应用这一等式,得到 e1=0.8e0e2=0.82e0,一般地 en=0.8ne0,xn=100+(x0100)0.8n. 代入 x0=20,得到 xn=10080(0.8)n. 这个公式满足初值;把它代入更新式,右边变成 10080(0.8)n+1,也正是下一项。因此它给出了整条解,而不只是前几个月的拟合曲线。

由于 0.8n>0 并趋向0,本例水量始终低于100 L,且单调增加。若把初值换成160 L,公式则为 xn=100+60(0.8)n,水量会从上方单调减少。下图的两串点分别描绘这两种情况;连线只帮助追踪相邻记录,不规定两次记录之间的实际水流过程。

从二十升和一百六十升出发的两组每月水量点,分别从下方和上方接近一百升平衡线
同一更新规则可以产生不同的解;两条解到100 L的偏差都每步缩小为原来的八成。

假如希望水量与100 L相差不超过1 L,需要多少步?条件是 80(0.8)n1. 两边取自然对数,得到 nlog0.8log80。由于 log0.8<0,除以它时不等号反向,故 nlog(1/80)log0.819.638. 步数取整数,所以最少20步。复核边界:第19步仍差约1.1529 L,第20步差约0.9223 L。从20 L出发不会在任何有限步恰好达到100 L;“达到平衡”若指实际操作,通常要明确容许误差。

蛛网图为什么要来回走

递推 xn+1=F(xn) 可以画在同一坐标平面里。横轴表示当前值,纵轴表示更新后的值。画出 y=F(x)=0.8x+20,另画辅助直线 y=x

从横轴的20开始,竖直走到更新函数,得到点 (20,36)。这一步读出了下一项36。要继续用36作为横坐标,就水平走到 y=x 上的 (36,36);再竖直走到 (36,48.8),便得到下一个更新结果。以后重复“竖直到函数、水平到对角线”,就是蛛网图的构造。

直线y等于零点八x加二十与对角线y等于x相交于一百一百,从二十开始的阶梯反复竖直到更新直线再水平到对角线
阶梯的两个方向分别完成“算出下一项”和“把下一项搬到横轴”。两条直线的交点就是平衡点。

在100以下,更新直线位于对角线上方,所以下一项比当前项大;在100以上则相反。但这种上下关系本身不足以保证没有超调。本例的确不会越过100,是因为 xn+1100=0.8(xn100) 保留了偏差的符号。图上看见的阶梯收缩,正对应已经证明的八成缩小关系。

一阶仿射递推的通式与稳定性

把保留比例与补入量写成一般常数,得到 xn+1=axn+b. 它通常称为一阶线性非齐次差分方程;从更新函数的角度看,ax+b 是仿射函数。“一阶”表示下一步只需当前状态;如果规则还依赖 xn1,就需要保存更多历史状态。显式的二阶规则例如 xn+2=xn+1+xn,需要给定两个起始值。取 x0=0,x1=1,才能依次确定后面的1、2、3、5等项。斐波那契在1202年提出的兔子繁殖问题就形成这种二阶递推结构,具体假设与按月计数见Chasnov,《Mathematical Biology》§2.1,印刷页15

a1 时,平衡点是 x=b/(1a)。同样相减,可得 xn=x+an(x0x). 也可以逐次展开:初始水量留下 anx0,每一步补入的量经历不同次数的保留,因此 xn=anx0+b(1+a++an1)=anx0+b1an1a. 两种形式相同:一种突出距平衡多远,另一种突出初始量和历次输入分别贡献了多少。Marcel Oliver 的讲义《Difference Equations》§2给出了含变系数情形的一般递推解法。

称平衡点稳定,是指初值足够接近它时,以后始终保持接近;在此基础上,附近轨迹还趋于它,则称渐近稳定。对于上面的仿射递推,这些性质直接由 |an(x0x)| 决定。

参数 偏差的变化 平衡点性质
0<a<1 同号、逐步缩小 渐近稳定,单侧趋近
a=0 一步后偏差为零 一步到达平衡
1<a<0 正负交替,绝对值缩小 渐近稳定,交替趋近
a=1 正负交替,绝对值不变 稳定但不渐近稳定,非平衡解为二周期
|a|>1 非零偏差的绝对值增大 不稳定

例如 xn+1=1600.6xn 的平衡点仍是100。取 x0=120,有 x1=88x2=107.2x3=95.68;偏差20、−12、7.2、−4.32逐次换号缩小。这可以表示围绕目标的过度调节,却不再是“留下负六成水量”的物理保留过程。数学参数允许什么,与具体机制允许什么,要分别检查。

此前除以了 1a,所以还须处理 a=1。此时 xn=x0+nb:若 b0 就没有平衡点;若 b=0 则每个状态都是平衡点,邻近的初值各自停在原处,并不互相靠拢。

非线性更新怎样在平衡附近判断

对较一般的 xn+1=F(xn),先解 F(x)=x。若 F 在平衡附近连续可微,且 |F(x)|<1,可以选取一个小邻域及常数 q<1,使邻域里处处有 |F(x)|q。利用中值定理, |F(x)F(x)|q|xx|. 只要初值在这个邻域里,下一项离平衡更近,仍留在邻域;逐步应用得到 |xnx|qn|x0x|0。这既证明稳定,也证明吸引性。

|F(x)|>1,可在小邻域内取得下界 |F(x)|q>1,同一中值定理使每一步非零偏差至少放大 q 倍,直到离开该邻域,因此不稳定。若导数绝对值恰好为1,这一检验不作结论。例如 F(x)=xx3 在0附近会把小偏差缩小,F(x)=x+x3 则放大,两者在0的导数却都是1。详细条件与证明见Oliver,§3,定理3

离散模型、连续采样与欧拉近似

水箱的逐月操作本来就定义了离散过程。若另设持续进水和持续排水,则可以建立微分方程 dxdt=qκx,q>0,κ>0. 这里 t 以月计,q 是L/月,κ 是每月的连续排出率。平衡水量为 x=q/κ,其精确解为 x(t)=x+(x(0)x)eκt。每隔 h 个月记录一次,精确记录满足 xn+1=eκhxn+x(1eκh). 这不是近似,是连续方程在离散时刻的精确采样关系。

另一种做法,是把一段时间内的变化率近似冻结在该段起点,即显式欧拉法xn+1=xn+h(qκxn)=(1κh)xn+qh. 它用 1κh 近似 eκh。由指数展开 ez=1z+z2/2+,可见只保留到一次项时漏掉了从二次开始的项。这里控制近似程度的是无量纲步长 z=κh,而不只是步长数字看上去是否小。

例如取 q=20 L/月、κ=0.2 每月、h=1 月,欧拉法恰好给出开头的 0.8xn+20;但连续方程的精确采样是 0.818731xn+18.126925。从20 L出发,一个月后的连续精确值约为34.5015 L,欧拉值为36 L。两个模型的平衡都是100 L,过程仍有差别。

若坚持让连续方程的月度精确采样与原递推完全相同,应取 κ=log0.80.223144 每月,并令 q=100κ22.314355 L/月。它们是由月度保留关系反推的连续参数,不能把“每月排出20%”直接当作连续率0.2而又声称精确相同。

步长怎样制造振荡甚至发散

连续误差满足 e=κe,始终同号并逐渐消失。欧拉误差却满足 en+1=(1κh)en. 因此渐近稳定要求 |1κh|<1,也就是 0<κh<2。在 1<κh<2 时,它虽能衰减,却会交替越过平衡;在 κh=2 时偏差不衰减;大于2时偏差被放大。若还要求对所有非负初值都保持非负更新,一个充分条件是 0κh1,使保留系数和输入项都非负。这比只要求渐近稳定更强。

下图取非平衡初值 e00,把偏差除以初始偏差,令 E=e/e0,再以 τ=κt 作为横轴。图中用 δ=κh 标记无量纲步长。连续曲线都是 E=eτ。三种欧拉步长的乘数分别为0.5、−0.5、−1.2,因而依次出现同侧衰减、交替衰减和交替放大。变化的是算法步长,同一连续方程并未发生新的振荡机制。

三幅误差图比较连续指数衰减曲线与欧拉点列,无量纲步长零点五时同侧衰减,一点五时交替衰减,二点二时交替发散
精确采样乘数始终为正的指数;欧拉乘数可以变成负数,甚至绝对值超过一。折线仅连接计算点。

这类稳定性来自每一步误差的放大因子,见Driscoll 与 Braun,《Fundamentals of Numerical Computation》§11.3。判据通过也不保证当前步长已足够准确,还需比较更小步长、精确解或独立误差估计。

输入不精确时,结论能维持到什么程度

假设仍保留八成,但每月实际补入量比20 L多或少 ηn,且 |ηn|ε。用 dn 表示这条受扰轨迹与原轨迹之差,则 dn+1=0.8dn+ηn. 展开后有 dn=(0.8)nd0+j=0n1(0.8)n1jηj. 每一项的意义是:早期输入误差已经经历多次衰减,最新误差还没有衰减。取绝对值并把有限等比和相加,得到 |dn|(0.8)n|d0|+5ε(1(0.8)n). 从同一初值出发,若每次输入误差不超过0.1 L,长期轨迹差就不超过0.5 L。若每次都多补0.1 L,新的平衡正是 20.1/0.2=100.5 L,说明这个上界可以逼近。它也适用于同样形式的逐步计算误差,但实际水箱的保留比例变化、容量溢流等机制需要另建方程,不能一概归入固定的输入误差。

相关条目与参考资料

从离散更新转向瞬时变化率,可继续阅读微分方程一阶线性微分方程;状态依赖的增长可见洛吉斯蒂模型;多状态相互影响可见捕食者-猎物模型。模型单位的核对见量纲分析