4. 参数敏感性分析的数学基础
在ODE模型中,参数并不是孤立的常数,它们通过微分方程的解耦合在一起。当我们问“某个参数变化1%时,状态轨迹会变化多少”时,实际上是在讨论解对参数的局部响应关系。本节从灵敏度函数的定义出发,逐步建立一阶灵敏度、归一化灵敏度、灵敏度矩阵,并厘清它与雅可比矩阵的本质区别与联系。
一、灵敏度函数:把“参数扰动”变成可计算的量
考虑含参数向量 p = (p₁, p₂, …, p_m) 的初值问题:
dx/dt = f(x, p, t), x(t₀) = x₀(p)
其解记为 x(t; p)。对第 j 个参数 p_j,定义一阶灵敏度函数为解对该参数的偏导数:
S_j(t) = ∂x(t; p) / ∂p_j
它表示在参数空间中沿 p_j 方向做无穷小扰动时,状态轨迹的绝对变化率。若 x 是 n 维状态,则 S_j(t) 也是 n 维向量,逐分量描述每个状态变量对该参数的敏感程度。灵敏度函数不是凭空定义的,它满足一个可数值求解的变分方程:对原方程两边关于 p_j 求导,得
dS_j/dt = (∂f/∂x)·S_j + ∂f/∂p_j, S_j(t₀) = ∂x₀/∂p_j
其中 ∂f/∂x 是系统在当前轨迹处的雅可比矩阵,∂f/∂p_j 是方程右端对参数的偏导。这意味着:只要在求解原ODE的同时,把 S_j 作为附加状态一起积分,就能得到整条灵敏度轨迹。这是灵敏度分析在工程上可落地的基础。
二、归一化灵敏度:消除量纲,才能横向比较
绝对灵敏度 S_j 的数值受参数单位和状态量纲影响。例如参数以“秒”计与以“毫秒”计,灵敏度数值会相差千倍,但物理意义相同。为此引入归一化(相对)灵敏度:
S̃_j(t) = (∂x/x) / (∂p_j/p_j) = (p_j / x) · ∂x/∂p_j
它回答的是“参数变化1%时,状态变化百分之几”,是无量纲量,因而可以在不同参数、不同状态分量之间直接排序。工程上常取时间上的某种范数(如峰值、积分均值或终端值)作为标量指标,形成参数重要性排序表。需要注意:当 x 接近零时归一化会放大数值,此时应回到绝对灵敏度或改用半相对形式 p_j·∂x/∂p_j。
三、灵敏度矩阵与雅可比矩阵:形似而神不同
把 n 个状态对 m 个参数的全部一阶灵敏度排成矩阵,得到 n×m 的灵敏度矩阵:
⎡ ∂x₁/∂p₁ ∂x₁/∂p₂ … ∂x₁/∂p_m ⎤
S = ⎢ ∂x₂/∂p₁ ∂x₂/∂p₂ … ∂x₂/∂p_m ⎥
⎣ … … … … ⎦
它的第 j 列就是 S_j(t),第 i 行描述第 i 个状态对所有参数的敏感分布。而雅可比矩阵 J = ∂f/∂x 是 n×n 方阵,描述的是状态对状态的局部耦合,出现在变分方程右端,决定灵敏度如何沿时间传播。二者维度不同、自变量不同、物理含义不同:雅可比刻画“当前状态如何影响状态变化率”,灵敏度矩阵刻画“参数如何影响整条解轨迹”。但它们在计算上紧密耦合——没有 J,就无法积分出 S;而 S 的列数由参数个数决定,与 J 的阶数无关。下图展示这一关系。
图中可见:灵敏度矩阵的每一列由“雅可比传播项”和“参数驱动项”共同决定。雅可比决定扰动在状态间的放大或衰减,参数偏导决定扰动从哪里注入。二者缺一不可,但绝不能混为一谈。
四、一个可手算的教学示例
设一阶线性模型 dx/dt = -a·x + b·u,x(0)=x₀,参数为 a 与 b,u 为常数输入。此时 J = ∂f/∂x = -a,∂f/∂a = -x,∂f/∂b = u。灵敏度满足:
dS_a/dt = -a·S_a - x, S_a(0)=0
dS_b/dt = -a·S_b + u, S_b(0)=0
取 a=0.5, b=2, u=1, x₀=0,解析解为 x(t)=2(1-e^{-0.5t})。可解得 S_b(t)=2(1-e^{-0.5t})/1·… 的对应形式,而 S_a(t) 因含 -x 驱动项而呈先增后稳的形态。若在 t=4 处比较归一化灵敏度,会发现 b 的相对影响明显大于 a——这正是参数排序的依据。上述数值为教学示例设定,实际模型需按真实参数积分变分方程获得。
S 与 x 拼成一个增广状态向量,交给同一求解器积分;雅可比可用解析式或自动微分获得,避免有限差分带来的步长误差。五、使用时的三个关键约定
- 参照系一致:灵敏度定义为“参数增大时状态增大为正”,若某工具采用相反符号约定,必须在全文统一说明。
- 局部性:一阶灵敏度只在标称参数附近有效,参数大幅变化时需用二阶项或全局方法校核。
- 时间指标选择:整条轨迹的灵敏度需压缩为标量(终端值、峰值、L2范数)才能排序,指标不同结论可能不同,应结合分析目的选取。
掌握这组数学工具后,参数变化影响分析就从“试几个值看看”升级为“有方向、有量级、可排序”的系统分析:灵敏度函数给出逐时刻响应,归一化灵敏度给出可比的重要性,灵敏度矩阵组织全部参数关系,而雅可比矩阵则是这一切能够被数值传播的内在机制。