抗体结合动力学的数值分析与编程实现
1. ODE 刚度问题
在数值求解常微分方程(ODE)和偏微分方程(PDE)模型时,ODE 积分器的误差容限是决定整体精度的重要因素。例如,指定的相对误差容限(reltol)和绝对误差容限(abstol)设为 1.0×10⁻⁷ 时,会影响 MOL(Method of Lines)方法求解的准确性。改变 ODE 误差容限是一种 h 细化方式,因为像 ode15s 这样的积分器会调整积分区间以达到指定精度,同时它还能进行 p 细化,改变积分算法的阶数(从 1 到 5)。
为了分析 ODE 的误差,我们尝试将 ode15s 替换为 ode45。在主程序中进行如下修改:
mf=1;
if(mf==1) % explicit FDs
[t,u]=ode45(@pde_1,tout,u0,options);
end
然而,运行修改后的代码时,计算失败,没有在合理的计算机运行时间内得到解。这是因为 ode15s 适用于刚性 ODE,而 ode45 适用于非刚性 ODE。MOL 对相关方程近似得到的 22 个 ODE 可能存在刚性问题,导致 ode45 求解失败。
为了进一步研究刚性问题,我们使用了固定步长的显式积分器 rk4 替代 ode15s。通过试验,当 nsteps = 100,h = 0.02,nout = 51 时,可以得到稳定解,此时对 ODE 例程 pde_1 的调用次数 ncall = (51 - 1)(100)(4) = 20000。而使用 ode15s 时,ncall = 135,这清楚地展示了 ode15s
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



