显式和隐式到底差在哪?给我们最直接的感受是"显式快但不准,隐式慢但准",但这两种方法的差异不是"快慢"和"准不准"能说清楚的,根源在它们对同一个动力学方程做了完全不同的数学处理。这篇文章从动力学方程出发,把两种时间积分方法的理论差异讲透。
所有动力学分析,无论显式还是隐式,都在解同一个方程:
Mü + Cu̇ + Ku = F

M 是质量矩阵,ü 是加速度向量,这两个乘在一起代表惯性力。Cu̇ 是阻尼力,K 是刚度矩阵,u 是位移向量,它们和在一起是内力。F 是外力向量。
本质上就是:这个方程的物理含义是 外力 = 惯性力 + 阻尼力 + 弹性力,这是所有动力学分析共同的物理起点。
问题来了:已知 t 时刻的状态,怎么求 t+Δt 时刻的位移?两种不同的回答方式,催生了两种完全不同的数值方法。
显式方法的核心叫做中心差分法。它的思路很直接:用 t 时刻和 t−Δt 时刻的位移,直接推算 t+Δt 时刻的位移。已知两项,推第三项,不需要解方程组。
加速度ü 用位移差分近似:
ü ≈ (ut+Δt − 2ut + ut−Δt) / Δt²

本质上就是:每一步都是"我知道上一步和这一步,直接往前走一步"。不需要知道全局信息,只需要局部数据。
把这个近似代入动力学方程,整理之后,ut+Δt 的表达式里只包含 ut 和 ut−Δt。每一步的计算量极小——节点力汇总,加上质量矩阵乘法,质量矩阵是对角阵,求逆就是取倒数。
但这个方法有一个严格限制:时间步长 Δt 不能超过一个上限,否则计算会发散。这个上限叫做 Courant 条件:
Δt ≤ Lmin / cd
Lmin 是模型里最小单元的特征长度,cd 是膨胀波速:
cd = √((λ + 2μ) / ρ)
λ 和 μ 是 Lamé 常数,ρ 是密度。本质上就是:cd 的物理含义是"变形在材料里传播的速度"。钢的 cd 大约 5000m/s,铝相近,橡胶只有几百m/s。
一个 1mm 的钢单元,Δt 上限大约 0.2 微秒。如果物理过程持续 10 毫秒,要跑 5 万步。单元越小,波速越高,Δt 上限越小,步数越多。
隐式方法用的是Newmark-β 法,思路完全不同。
中心差分用已知数据"正推",Newmark-β 的做法是"倒推":把 t+Δt 时刻的加速度也设为未知量,和位移一起放到平衡方程里求解。每一步都要组装刚度矩阵,解一个线性方程组。
Newmark-β 引入两个参数 β 和 γ,用来假设加速度和速度在时间步内的变化规律。方程不再是 ut+Δt 的直接表达式,而是包含 ut+Δt 和它的二阶导 üt+Δt 的耦合方程组——求解器必须把整个刚度矩阵分解,才能得到 ut+Δt。

换句话说:每一步都在解"下一刻的位移应该是多少才能满足整体平衡",而不是"从已知数据往前推一步"。
刚度矩阵分解的计算量是 O(n³),n 是自由度数。10 万自由度的问题,每一步矩阵分解的时间可能达到几十秒。
Newmark-β 有一个关键特性:当参数 β ≥ 0.25 时,方法是无条件稳定的——无论 Δt 取多大,数值不会发散。这和显式的 Courant 条件形成鲜明对比。
这意味着隐式的时间步长可以由精度决定,而不由稳定性决定。低频振动问题,周期 0.1 秒,取 Δt = 0.001 秒,跑 100 步就能覆盖一个完整周期。
但无条件稳定不等于无条件准确。步长太大,高频模态会被滤掉,响应曲线看着光滑,实际上失真的高频部分被砍掉了。更重要的是,Newmark-β 每一步都需要牛顿迭代。在非线性问题里(大变形、塑性、复杂接触),刚度矩阵每一步都在变化,迭代可能根本不收敛。
显式的时间步被 Courant 条件卡住,隐式的时间步由精度决定但怕非线性不收敛。这两件事背后有没有统一的物理解释?
有。核心是信息传播速度。
Courant 条件的物理含义是:在一个时间步 Δt 内,数值扰动传播的距离不能超过最小单元的尺寸 Lmin。数值传播速度不能超过物理波速。

隐式方法没有这个限制,因为它在每一步都通过求解刚度方程建立了全局通信——每个节点的位移都是通过"全局知道"算出来的,而不是靠局部扰动一点点扩散出去。这绕过了 Courant 条件,但代价是每一步都要做完整的矩阵分解。
本质上就是:显式让信息自然传播(数值速度 ≤ 物理速度),隐式强行建立全局通信(不受波速限制但计算量大)。
这也是为什么隐式在处理接触问题时特别费劲:接触面的约束更新需要全局重新平衡,非线性越强,迭代越难收敛。显式的接触只是节点力修正,不进方程求解,接触再复杂,只要模型能跑起来就不存在接触收敛问题。
从上面的分析可以提炼出两个核心判据。
● 第一判据:载荷作用时间
毫秒级以上的载荷——地震响应、结构振动、准静态成型——用隐式。时间步可以取到毫秒甚至秒级,1000 步覆盖十几秒的地震波,每一步矩阵分解的代价完全划得来。
毫秒级以下的载荷——高速碰撞、爆炸、穿甲——用显式。步长被迫按微秒取,隐式每一步的计算量在这种场景下是不可承受的。
● 第二判据:非线性程度
大变形、复杂接触状态变化、材料失效断裂——这些强非线性场景,隐式收敛困难,优先用显式。线性或弱非线性问题——小变形、简单边界——优先用隐式。
知道主场在哪里重要,知道边界在哪里更重要。
用显式算地震:时间步被迫按最小单元尺寸算,0.1mm 的畸形单元会把全局步长拉低到 0.02 微秒,10 秒的地震波要跑 5 亿步——不是不能算,是算完你头发都白了。
用隐式算高速碰撞:接触状态剧烈变化,刚度矩阵每一步都在剧烈改写,牛顿迭代可能根本不收敛。有人调了两周收敛参数还是跑不动,最后换显式,三个小时出结果。
特别提醒:选求解器,就是选"你的问题最贵的成本在哪"——显式贵在步数(被 Courant 条件卡住),隐式贵在每步计算量(被矩阵分解卡住)。
显式和隐式的差异,根源在时间积分策略不同:显式"正推",靠局部数据往前走,时间步受 Courant 条件约束;隐式"倒推",靠全局平衡求位移,时间步由精度决定但怕强非线性不收敛。
★ 一句话记忆
关心"波怎么传"→显式
关心"力怎么平衡"→隐式
★ 核心对比
✓ 显式(中心差分):已知两项推第三项,不解方程,时间步受 Courant 条件约束,怕小单元
✓ 隐式(Newmark-β):倒推 t+Δt 时刻位移,解线性方程组,时间步由精度决定,怕强非线性不收敛
✓ 毫秒以上+低频振动→隐式;毫秒以下+冲击碰撞→显式
✓ 非线性强(接触、大变形、失效)→优先显式;弱非线性→优先隐式
✓ 选求解器本质是选"最贵的成本在哪",不是选哪个更高级
期望这篇文章对你的学习或工作有所启发。你的支持是我持续更新的最大动力!