本节摘要:求解器家族沿三个正交维度展开:定步长对变步长、单步对多步、显式对隐式。本节先把地图画出来,再给出一条从模型特性出发的选型路径——刚性特征看时间常数悬殊度,速率构成看离散占比,连续性看不连续环节多少。读完本节,"选求解器"从碰运气变成一道可以推理的题。
3.1 节的减速疑案已经预告了答案:求解器决定仿真的一切计算行为——速度、精度、鲁棒性,甚至结果是否可信。同样一个电机模型,用对了求解器两秒跑完,选错了十分钟出不来还报错;更要命的是选错后"勉强跑完"的情形,曲线貌似合理,数值已经失真。求解器是模型行为的最终解释者,选型失误是所有解释失真的起点。
维度一:定步长对变步长。 定步长求解器按固定节拍推进,每步计算量恒定,行为确定、可实时执行——代码生成与实时仿真的硬要求。变步长求解器自适应调节步长:状态变化平缓时放大步长提速,剧烈时收缩保精度——离线分析场景的精度之王。这是最重要的分界,3.4 节会用实验定量对比。
维度二:单步对多步。 单步法(如龙格库塔家族)只要当前状态就能算下一步,随时可以拐弯,适合有事件打断的场景;多步法(如 Adams 系列)要回看历史若干步才能外推,平缓段效率极高,但遇到频繁事件需要频繁重启,优势尽失。
维度三:显式对隐式。 显式法直接用已知量算导数、推状态,每步便宜;隐式法在每个步长内解一个方程(牛顿迭代),每步更贵,但对刚性问题可以取大步长而不失稳。刚性判据在数学上是系统的特征值悬殊度,工程上的快速识别法:把系统里最快与最慢的时间常数比一比,比值超过三个数量级,就该考虑隐式求解器了。

把地图走成路径,四步。第一步问用途:模型要生成代码、要跑实时仿真吗?是,进入定步长侧;纯离线分析,进入变步长侧。第二步问构成:全离散模型用离散求解器,根本不积分,最快;含连续状态才谈算法选择。第三步判刚性:按上面的识别信号检查。第四步看事件密度:过零事件频繁(开关电源、碰撞检测)选单步类,平缓光滑的长时程仿真可以吃多步法的效率红利。
两个高频场景给出现成答案。电力电子开关模型:变步长下过零事件密集,实践上常采用"变步长开发、定步长验证"的两段式——开发期用变步长隐式法抓准开关波形,代码落地前切到定步长按开关周期节拍验证离散化影响。机电热耦合的长时程仿真:典型刚性场景,变步长隐式多步法几乎必然胜出,显式法会在快速电瞬态上把步长拖到纳秒级,慢得无法接受。
选型还有一个常被忽略的收尾动作:换一个求解器复跑。同一模型在两个不同算法下结果一致,可信度大增;差异明显,说明模型或容差设置有问题,必须查明原因再谈结论。这个动作与 3.4 节的收敛性检查合起来,构成"结果可信"的最低门槛。
💡 关键直觉:容差设置与求解器选择是配套的。相对容差从千分之一收紧到百万分之一,步长会相应缩短、耗时成倍增长。盲目收紧容差与盲目放大步长一样,都是没想清楚精度要用来干什么。
选型定了家族,容差决定每个家族里"算多细"。三个旋钮各有分工。相对容差:误差相对于信号幅值的允许比例,默认千分之一——它直接乘在步长决策上,是最常用的旋钮;经验是把它当作精度预算来消费:关键量需要三位有效数字就设千分之一量级,需要四位就再收一个数量级,别白付。绝对容差:信号幅值本身很小的时候(接近零的电流、微小的位移),相对误差失去意义,绝对容差接管——它的默认值对大多数信号偏松,接近零的信号若行为可疑,第一个该查的就是它。最大步长:变步长求解器在平缓段会自己放大步长,放大到什么程度受它约束;限制最大步长的两个理由是输出点太疏影响观感、以及防止求解器"大步跨过"慢变化的物理细节(比如缓变的谐振激振过程)。
三个旋钮的联动有一句口诀:相对容差管大局,绝对容差管小信号,最大步长管采样密度。调任何一个之后,按 3.4 节的契约复跑收敛检查——容差与步长的每次改动都是对"结果可信"承诺的重新定价。
自动选择对常见场景相当聪明,起步阶段信它没问题。但两件事它替不了你:一是诊断——当仿真变慢、报错、结果可疑时,不懂选型的知识就失去了判断"是求解器问题还是模型问题"的语言;二是边界场景——强刚性、高频开关、实时落地这些场合,自动选择的默认值常不是最优甚至不合适。把它当 autopilot:平飞可以放手,起降与颠簸要自己接管。
变步长求解器的步长序列对数值环境敏感:不同 BLAS 库、不同的浮点优化等级,都会让误差估计在第 N 位小数上分岔,随后步长轨迹逐渐不同。差异本身在容差内属正常,但这正是"关键结论必须配收敛检查"的又一理由——可信的结果不依赖具体哪台机器算出来的。
选型路径走一遍完整场景以加深印象。对象是一台带长电缆的电机:电缆的电磁瞬态在微秒级、电流环在毫秒级、机械在百毫秒级、温升在千秒级——四个时间尺度跨九个数量级,教科书级的强刚性。走四步路径:第一步问用途——离线验证控制策略,不生成代码,进变步长侧;第二步问构成——纯连续对象加离散控制器,含连续状态,需要算法;第三步判刚性——时间常数跨九个数量级,远超三级的判据,锁定隐式家族;第四步看事件——控制器节拍是唯一的离散事件,密度低,多步法的效率红利可吃。结论:变步长隐式多步法,配合默认容差起步,再按关键量契约收紧。推演全程没有试错,每一步都从模型特性直接推出——这就是本节说的"选型是可推理的题"。
对照一组反面数据:同一模型若误用显式方法,稳定步长被微秒级的电缆瞬态钉死,两小时的温升过程需要百亿步量级——不是慢,是根本跑不完。这类"跑不完"在实践中的迷惑性在于它常被误诊为"模型太复杂",而真相只是求解器与刚性失配:换隐式方法后同样的模型几分钟收敛。选型知识在这里直接决定项目可行性,而不仅是效率优化。
地图有了,还有一个特殊地形没有标注:不连续环节出没的区域。下一节走进开关、继电器与饱和的世界,看引擎如何精确定位每一次跳变。