刚性微分方程(Stiff Differential Equations)是指一类在数值求解中表现出特殊困难的微分方程。这类方程的解通常包含多个时间尺度差异较大的分量,即某些分量变化非常快,而其他分量变化相对较慢。这种特性使得在数值求解时需要非常小的时间步长来捕捉快速变化的分量,而为了求解整个时间区间,又需要较大的时间步长来减少计算量。这种矛盾导致常规的数值方法(如显式方法)效率低下甚至失效。
刚性微分方程的特点:
-
多尺度特性:解中包含快速衰减和缓慢变化的分量。
-
数值求解困难:显式方法(如
ode45
)需要极小的步长来保持稳定性,导致计算效率低。 -
稳定性要求高:数值方法需要具备良好的稳定性,隐式方法(如
ode15s
)通常更适合。
示例:
考虑一个简单的刚性微分方程:
解析解为:
其中, 是快速衰减的分量, 是缓慢变化的分量。
数值求解的挑战:
-
显式方法(如
ode45
)需要极小的步长来捕捉快速衰减的分量,导致计算效率低。 -
隐式方法(如
ode15s
)通过使用更大的步长和更好的稳定性,能够高效求解。
MATLAB 中的求解:
使用 ode15s
求解上述刚性微分方程:
odefun = @(t, y) -1000*y + 3000 - 2000*exp(-t); tspan = [0 1]; y0 = 0; [t, y] = ode15s(odefun, tspan, y0); plot(t, y); xlabel('t'); ylabel('y'); title('Solution of a Stiff Differential Equation with ode15s');
总结:
刚性微分方程的解包含多尺度分量,数值求解时需要高稳定性的隐式方法(如 ode15s
)来高效处理。显式方法由于稳定性限制,通常不适用于这类问题。