3. 动力系统建模实例分析

动力系统建模的核心工作,不是先写微分方程,而是先把一个真实对象“翻译”成状态变量、变化规律和初始条件三件事。状态变量回答“用什么量描述系统此刻的样子”,变化规律回答“这些量如何随时间演化”,初始条件回答“从哪个具体状态出发”。三者缺一,初值问题就不完整。本节通过物理、生物、工程三个领域的实例,演示从现象到方程的抽象过程,并说明初始条件如何从实际测量或合理假设中得到。

实例一:物理系统——有空气阻力的自由落体

考虑一个质量 m = 0.5 kg 的小球从静止释放,取竖直向下为正方向,位置记为 x(t),速度记为 v(t)。受力分析给出两个力:重力 mg 向下为正,空气阻力与速度反向、大小取线性模型 kv,其中 k = 0.2 N·s/m。由牛顿第二定律:

m·dv/dt = m·g − k·v
dv/dt = g − (k/m)·v ,  g = 9.8 m/s²
初始条件:x(0) = 0 , v(0) = 0(静止释放)

这里的状态向量是 (x, v),两个一阶方程耦合:dx/dt = v,dv/dt = g − (k/m)v。抽象过程中有两个关键判断:一是阻力模型的选择,线性阻力只在低速时近似成立,若速度较大应改用 kv² 模型;二是初始条件的物理来源,“静止释放”直接给出 v(0) = 0,而位置零点是我们人为选定的参考点,属于约定而非测量。这个约定必须在全文保持一致,否则后续位移结果会整体平移。

该模型有一个可解析检验的特征量:终端速度 vT = mg/k = 0.5×9.8/0.2 = 24.5 m/s。数值求解后若速度单调上升并趋近 24.5 m/s,说明方程与参数自洽;若速度越过该值继续增大,则多半是阻力项符号写反了。这是建模阶段就能预判的验证点。

实例二:生物系统——有限环境下的种群增长

设某培养皿中酵母菌数量为 N(t),单位万个。资源有限时常用逻辑斯谛模型:

dN/dt = r·N·(1 − N/K)
r = 0.6 /h(内禀增长率),K = 20(环境容纳量)
初始条件:N(0) = 1(接种量)

与物理实例不同,生物建模的难点在于参数不可直接测量。r 和 K 通常由实验数据拟合得到:在 N 远小于 K 的阶段,增长近似指数型,可用早期数据估计 r;K 则取长期稳定平台值。初始条件 N(0) = 1 来自接种操作,是可控的实验输入。这里的状态变量只有一个,但非线性项 N² 使方程不再有简单的指数解,需要数值方法。

建模时还应检查量纲与合理性:r 的单位是 1/时间,K 与 N 同量纲,乘积 rN(1−N/K) 的单位是数量/时间,与 dN/dt 一致。若把 K 误写成数量的倒数,量纲立刻不匹配,这是抽象阶段最容易被忽略的错误。此外,逻辑斯谛模型隐含“无迁入迁出、无年龄结构”的假设,实际建模报告中应明确写出这些假设,而不是默认成立。

实例三:工程系统——RC 电路充电过程

一个电阻 R = 1 kΩ 与电容 C = 1000 μF 串联,接在 Us = 5 V 直流电源上,开关在 t = 0 时闭合。取电容电压 uC 为状态变量,由基尔霍夫电压定律:

RC·du_C/dt + u_C = U_s
时间常数 τ = R·C = 1000 × 1000×10⁻⁶ = 1 s
初始条件:u_C(0) = 0(电容初始未储能)

解析解为 uC(t) = 5(1 − e−t/τ)。工程建模中,初始条件的来源需要区分:电容“未储能”是实验前通过放电操作保证的,属于可验证的初始状态;而电源电压 5 V 是输入参数,不是初始条件。把输入参数误当作初始条件,是初学者常见的抽象错误。该系统的验证点也很明确:t = τ 时电压应达到约 63.2% 的稳态值,即 3.16 V;t = 5τ 时接近 5 V。若数值解在 t = 1 s 处偏离 3.16 V 较多,应检查 R、C 的单位换算,尤其是 μF 到 F 的 10⁻⁶ 因子。

从真实对象到初值问题的抽象路径 物理:落体 重力 + 线性空气阻力 状态:(x, v) dx/dt = v dv/dt = g − (k/m)v 初值:x(0)=0, v(0)=0 检验:v → mg/k = 24.5 m/s 符号约定:向下为正 生物:种群增长 有限资源、无迁入迁出 状态:N(数量) dN/dt = rN(1 − N/K) r=0.6/h, K=20 初值:N(0)=1(接种量) 检验:量纲一致、N → K 参数由数据拟合 工程:RC 充电 直流电源、开关闭合 状态:u_C(电容电压) RC·du_C/dt + u_C = U_s τ = RC = 1 s 初值:u_C(0)=0(已放电) 检验:t=τ 时约 3.16 V U_s 是输入,不是初值 共性:状态变量 + 变化规律 + 初始条件 + 可检验的物理/生物/工程约束

抽象过程中的三个易错点

对比三个实例可以看出,建模失败往往不在求解环节,而在抽象环节。第一,状态变量选得不够或选得冗余。落体问题若只取位置 x 而不取速度,方程变成二阶,虽然数学上等价,但初值需要同时给出 x(0) 和 x′(0),反而更容易漏条件。第二,把输入与初始条件混为一谈。RC 电路中电源电压是持续作用的输入,电容初始电压才是初值;若把 5 V 写成 uC(0),解会变成常数 5 V,完全丢失暂态过程。第三,忽略假设的适用边界。线性阻力、逻辑斯谛增长、理想 RC 元件都各有前提,建模报告中应把假设与方程并列写出,而不是只留方程。

一个可操作的检查顺序是:先写出状态变量的物理含义与单位,再写出每个状态变量的一阶导数表达式,然后逐项核对量纲,最后单独列出初始条件的来源(测量、操作保证或约定)。按这个顺序,三个实例都能在几分钟内完成自检。例如落体问题中 k/m 的单位是 1/s,与 g 的单位 m/s² 相乘后得到 m/s²,与 dv/dt 一致;生物模型中 r 的单位 1/h 与 dN/dt 的数量/h 一致;RC 电路中 RC 的单位是秒,与 duC/dt 的 V/s 相乘得到 V,与 uC 一致。量纲核对不能证明模型正确,但能快速排除大量低级错误。

建模时先写“状态变量清单”和“初始条件来源”两行文字,再动笔写方程。清单里每个量都标注单位,来源一栏写清是测量值、操作保证还是人为约定。这一步只需几分钟,却能避免后续求解和验证阶段的大部分返工。

三个实例的共同结论是:初值问题的“初值”不是随手填的数字,而是对系统起始状态的明确声明。物理中它来自释放方式,生物中它来自接种操作,工程中它来自放电准备。把这些来源写清楚,方程才有可复现的起点,后续的数值求解与结果验证也才有明确的对照基准。