11-1 ODE OC

MATLAB 用於求解常微分方程式(Ordinary Differential Equations,簡稱 ODE)的指令可以列表如下:

指令方法適用ODE類別
ode45Explicit Runge-Kutta (4, 5) pair of Dormand-PrinceNonstiff ODE
ode23Explicit Runge-Kutta (2, 3) pair of Bogacki and ShampineNonstiff ODE
ode113Variable order Adams-Bashforth-Moulton PECE solverNonstiff ODE
ode15sNumerical differentiation formulas (NDFS)Stiff ODE
ode23sModified Rosenbrock formula of order 2Stiff ODE
ode23tTrapezoidal rule with a “free” interpolantStiff ODE
ode23tbImplicit Runge-Kutta formula with a backward differentiation formula of order twoStiff ODE

上表列出的指令項目繁多,但最主要可分兩大類,即適用於 Nonstiff 系統及 Stiff 系統的指令。一般的常微分方程式都是 Nonstiff 系統,所以可以直接選用 ode45、ode23 或 ode113 來求解。Stiff 系統的特性是它的速率(即微分值)差異相常大,因此若使用一般的 ode45、ode23 或 ode113 來求解,可能會使得積分的步長(Step Sizes)變得很小,以便降低積分誤差至可容忍範圍以內,但如此一來,會導致計算時間過長。因此,欲解決此類 Stiff 系統問題,只要選用專門對付 Stiff 系統的指令,例如 ode15s、ode23s、ode23t 及 ode 23tb,即可迎刃而解。

Hint
除了 ODE 指令外,您也可使用 Simulink 來求解常微分方程式。Simulink 是和 MATLAB 共同使用的一套軟體,可以使用拖拉的方式來建立動態系統,並且可以直接產生 C 程式碼或進行動畫顯示,功能非常強大。

以下將說明 ODE 指令的基本用法及相關範例。


MATLAB程式設計:進階篇