常微分方程數值方法是用以尋找常微分方程（ODE）解的數值近似值的方法。其使用也稱作 數值積分，不過「數值積分」主要是指積分的計算。 很多微分方程無法精確求解。但在工程學等領域的實際應用中，通常只需得到數值近似解。本文介紹的演算法可用於計算這種近似值，另一種方法是用微積分技術得到解的級數展開表達。 常微分方程出現於物理學、化學、生物學、經濟學等學科中。Chicone C 2006 Ordinary differential equations with applications Vol 34 Springer Science Business Media 此外，偏微分方程數值方法中的一部分將偏微分方程轉為常微分方程，然後可用本文所述方法求解。 問題 一階微分方程是有如下形式的初值問題（IVP）： 其中 f 是函式 ft_0 infty times Rd to Rd，初始條件 y_0 in Rd 是已知向量。一階 是說方程中只出現了 y 的一階導。 在不失高階系統一般性的前提下，限制 l 式為一階微分方程，因為高階 ODE 可透過引入額外變數轉換為更大的一階方程組。例如，二階方程 yy 可重寫為 2 個一階方程：yz zy。 本文介紹 IVP 的數值方法，並指出邊值問題（BVP）需要一套不同的工具：需要在多個點上定義解 y 的值或成分，因此要用不同方法求解 BVP，如打靶法（及其變體），或差分、LeVeque R J 2007 Finite difference methods for ordinary and partial differential equations steadystate and timedependent problems Vol 98 SIAM 伽遼金法、Slimane Adjerid and Mahboub Baccouch 2010 Galerkin methods Scholarpedia 5 1010056 之類全域性方法，都適用於此類問題。 PicardLindelöf 定理指出，只要 f 是利普希茨連續的，就有唯一解。 方法 解一階 IVP 的數值方法可分為兩大類：Griffiths D F Higham D J 2010 Numerical methods for ordinary differential equations initial value problems Springer Science Business Media 與龍格 庫塔法。還可進一步劃為顯式或隱式，例如隱式線性多步法包括亞當斯 莫爾頓法（AdamsMoulton methods）與（BDF），隱式龍格 庫塔法包括對角隱式龍格 庫塔法（DIRK）、Alexander R 1977 Diagonally implicit RungeKutta methods for stiff ODEs SIAM Journal on Numerical Analysis 14 6 10061021Cash J R 1979 Diagonally implicit RungeKutta formulae with error estimates IMA Journal of Applied Mathematics 24 3 293301 單對角隱式龍格 庫塔法（SDIRK）Ferracina L Spijker M N 2008 Strong stability of singlydiagonallyimplicit RungeKutta methods Applied Numerical Mathematics 58 11 16751686 與基於高斯求積 Weisstein Eric W Gaussian Quadrature From MathWorldA Wolfram Web Resource httpsmathworldwolframcomGaussianQuadraturehtml 的高斯拉道法 Everhart E 1985 An efficient integrator that uses GaussRadau spacings In International Astronomical Union Colloquium Vol 83 pp 185202 Cambridge University Press 等等。線性多步法中的顯式方法有亞當斯 巴什福思法，布徹表（Butcher tableau）為下對角的龍格 庫塔法都是顯式方法。根據經驗，剛性微分方程需要用隱式方案，而非剛性問題則可用顯示方案更有效地求解。 所謂（GLM）是上述兩大類方法的概括。Butcher J C 1987 The numerical analysis of ordinary differential equations RungeKutta and general linear methods WileyInterscience 尤拉法 從曲線上任意一點出發，沿與曲線相切的直線移動一小段距離，就能得到曲線上鄰近點的近似值。 從微分方程 開始，可用差分近似代替導數 y： 重新排列後得到以下公式 y th approx y t hyt 利用 可得 此式的應用通常如下：擇步長 h，構造序列 t_0 t_1 t_0 h t_2 t_0 2h 記精確解 y t_n 的數值估計值為 y_n。受 啟發，可用下面的遞迴方法計算估計值： 這就是（前向）尤拉法，是萊昂哈德尤拉（1768）描述的方法。 尤拉法是顯式方法的一個例子，這是說新值 y_n1 是根據已知值（如 y_n）定義的。 反向尤拉法 若不用 ，而用近似值 則得到反向尤拉法： 反向尤拉法是隱式方法，這是說需要求解一個方程才能得到新值 y_n1。通常用定點迭代或牛頓 拉弗森法（的某種修改版）實現之。 隱式方法求解這方程比顯示方法直接代入要花更多時間，選擇方法時必須考慮這一成本。隱式方法（如 ）的優點是求解剛性方程時通常更穩定，便可以使用更大的步長 h。 一階指數積分法 描述了一大類積分器，近來得到了長足發展。 This is a modern and extensive review paper for exponential integrators 它們至少可以追溯到 20 世紀 60 年代。 此處不用 ，假設微分方程形式為 或已被區域性線性化，圍繞背景狀態產生線性項 Ay 與非線性項 mathcal Ny。 將 乘以 eA t，並在時間區間 t_n t_n1 t_n h 內精確積分，便構造得到了指數積分： y_n1 eA h y_n int_0h ehtau A mathcal Nleft yleft t_ntau right right dtau 此積分方程是精確的，但並沒有定義積分。 使 mathcal Ny t_ntau 在整個區間內不變，可實現一階指數積分： 推廣 尤拉法往往不夠精確。更準確地說，只有一階（下面將介紹階的概念），這就促使數學家尋找高階方法。 一種方法是，用 y_n 以及更多之前的值確定 y_n1，所謂多步法便實現了這種想法。最簡單的可能是蛙跳積分法，其是二階方法，（粗略地說）依賴於 2 個時間值。 幾乎所有實用的多步法都屬於，形式為 begin align alpha_k y_nk alpha_k1 y_nk1 cdots alpha_0 y_n quad h left beta_k f t_nky_nk beta_k1 f t_nk1y_nk1 cdots beta_0 f t_ny_n right end align 另一種方法是在區間 t_nt_n1 內取更多點。這產生了得名於卡爾龍格與馬丁威廉庫塔的龍格 庫塔法，其中一種 4 階方法尤為流行。 高階特徵 要用這些方法求解 ODE，需要的不僅是時間步長公式。始終相同的步長效率不高，於是開發了可變步長方法。通常，步長的選擇應使每步的（區域性）誤差低於某容差水平，這意味著方法還要計算誤差指標（error indicator），即對區域性誤差的估計。 這一思想的延伸是在不同階方法之間動態選擇（稱作可變階數方法）。基於理查德森外推法 Brezinski C Zaglia M R 2013 Extrapolation methods theory and practice Elsevier 的 BulirschStoer 演算法之類方法 Monroe J L 2002 Extrapolation and the BulirschStoer algorithm Physical Review E 65 6 066116Kirpekar S 2003 Implementation of the Bulirsch Stoer extrapolation method Department of Mechanical Engineering UC BerkeleyCalifornia 通常用於構建各種不同階的方法。 其他理想特徵還有： 輸出稠密：不僅對點 t_0 t_1 t_2 dots，還對整個積分割槽間進行低成本數值逼近； 事件定位：找到事件發生的位置，例如某函式取 0 的時間。通常用求根演算法； 支援平行計算； 用於時間積分時，具有時間可逆性。 其他方法 很多方法不在討論的框架內，如 多階導數法，不僅使用 f，還用其導數。這類方法包括 HermiteObreschkoff 法、與遞迴計算解 y 的泰勒級數係數的 Nurminskii E A Buryi A A 2011 ParkerSochacki method for solving systems of ordinary differential equations using graphics processors Numerical Analysis and Applications 4 3 223、BychkovScherbakov 法等。 二階常微分方程組法。前面說過，所有高階常微分方程都可化為形式如 1 的一階常微分方程組，這固然沒錯，但未必是最佳方法。可直接用於二階方程。 幾何積分法 Hairer E Lubich C Wanner G 2006 Geometric numerical integration structurepreserving algorithms for ordinary differential equations Vol 31 Springer Science Business MediaHairer E Lubich C Wanner G 2003 Geometric numerical integration illustrated by the StörmerVerlet method Acta Numerica 12 399450 專門針對幾類特殊的常微分方程（如解哈密頓力學方程的法），這些方法在數值求解時會尊重這些類的底結構或幾何結構。 是基於狀態量化思想的一系列 ODE 積分方法，在模擬頻繁不連續的稀疏系統時非常有效。 即時並行方法 有些 IVP 要求積分具有很高的時間解析度和 或很長的時間區間，傳統的序列時間步進法無法即時計算（如數值天氣預報、等離子體建模與分子動力學中的 IVP）。針對這些問題，人們開發了即時並行（PinT）法以便用平行計算縮短執行時間。 早期的 PinT 法（最早提出於 20 世紀 60 年代） 最初被研究人員忽視，因為其所需的平行計算架構尚未普及。2000 年代初，隨著算力的提高，靈活易用的 PinT 演算法 重新吸引了興趣，它適用於求解各種 IVP。的出現使 PinT 演算法獲得更多關注，並啟動了能用於世界上最強大的超級計算機的演算法開發。截至 2023 年，最流行的方法有 Parareal、PFASST、ParaDiag、MGRIT 等， 分析 數值分析不僅包括數值方法的設計，還包括其分析。分析中的 3 個核心概念是： 收斂性：方法是否逼近解； 階數：近似解的程度； 數值穩定性：誤差是否能得到抑制。Higham N J 2002 Accuracy and stability of numerical algorithms Vol 80 SIAM 收斂性 若數值解隨著步長 h 趨近於 0 而逼近精確解，則稱此數值方法具有收斂性（convergent）。更確切地說，要求對利普希茨函式 f 與每個 t0，ODE 1 lim_hto0 max_n01dotslfloor thrfloor left y_nh y t_n right 0 上述所有方法都收斂。 一致性與階數 設數值方法 y_nk Psi t_nk y_n y_n1 dots y_nk1 h 方法的區域性（截斷）誤差定義為迭代一步產生的誤差。即，假設之前的迭代無誤差，則是此方法結果與精確解之間的差 deltah_nk Psi left t_nk y t_n y t_n1 dots y t_nk1 h right y t_nk 若 lim_hto 0 frac deltah_nkh 0 則稱此方法一致（consistent）。若 deltah_nk O hp1 quadmbox as hto0 則稱此方法階數為 p。因此，階數不為 0 的方法是一致的。上文介紹的兩種尤拉法 4、6 都是 1 階的，因此是一致的。實踐中使用的大多數方法階數更高。一致性是收斂的必要條件，但不是充分條件；方法要收斂，必須同時具有一致性與零穩性（zerostable）。 一個相關概念是全域性（截斷）誤差，即達到固定時間 t 所需所有步驟中持續存在的誤差。明確地說，t 時刻的全域性誤差是 y_N y t，其中 N t t_0h。第 p 階一步法是收斂的，其全域性誤差是 O hp。對多階方法，這一說法不一定成立。 穩定性與剛性 對某些微分方程，尤拉法、顯式龍格 庫塔法、多步法（如亞當斯 巴什福思法）之類標準方法會表現出解的不穩定性，其他方法則可能產生穩定的解。方程中的這種 困難行為（本身不一定複雜）稱作 剛性（stiffness），通常是由於底問題中存在不同時間尺度造成的。Miranker A 2001 Numerical Methods for Stiff Equations and Singular Perturbation Problems and singular perturbation problems Vol 5 Springer Science Business Media 例如，機械系統中的碰撞（如碰撞振子中的）發生的時間尺度通常比物體運動的時間尺度小得多，這種差異使狀態引數曲線變得非常陡峭。 剛性問題在化學動力學、控制論、固體力學、天氣預報、生物學、等離子體物理、電子學等領域中無處不在。克服剛性的一種方法是將微分方程推廣到微分包含式，從而允許非光滑性並建立其模型。 歷史 下面是該領域一些重要進展的時間線。Brezinski C Wuytack L 2012 Numerical analysis Historical developments in the 20th century ElsevierButcher J C 1996 A history of RungeKutta methods Applied numerical mathematics 20 3 247260 1768 萊昂哈德尤拉發現尤拉法。 1824 奧古斯丁 路易柯西證明了尤拉法的收斂性。此證明中，柯西使用了隱性尤拉法。 1855 Francis Bashforth 在一封信中首次提到約翰柯西亞當斯的多步法。 1895 卡爾龍格發現第一個龍格 庫塔法。 1901 馬丁威廉庫塔描述了現在流行的 4 階龍格 庫塔法。 1910 路易斯弗萊理查德森公佈了他的外推法 理查德森外推法。 1952 Charles F Curtiss 與 Joseph Oakland Hirschfelder 提出剛性方程概念。 1963 Germund Dahlquist 引入積分法的 A 穩定性。 二階一維邊值問題的數值解法 邊值問題（BVPs）通常要離散化，得到近似相等的矩陣問題再數值求解。Ascher U M Mattheij R M Russell R D 1995 Numerical solution of boundary value problems for ordinary differential equations Society for Industrial and Applied Mathematics 最常用的一維 BVP 數值求解方法稱作有限差分法。這種方法用點值的線性組合構造描述函式導數的有限差分系數，例如一階導數的二階中心差分近似為： frac u_i1u_i12h ux_i mathcal Oh2 二階導數的二階中心差分近似為： frac u_i1 2 u_i u_i1h2 u x_i mathcal Oh2 兩式中， hx_ix_i1 是離散域上相鄰 x 值間的距離。這樣就構建了線性系統，然後可用標準矩陣法求解。例如，待解方程： begin align frac d2 udx2 u 0 u 00 u 11 end align 下一步是將問題離散化，用線性導數近似，如 u_i frac u_i12u_iu_i1h2 並解所得線性方程組。將有如下方程 frac u_i12u_iu_i1h2u_i 0 quad forall i123n1 初看之下，這個方程組似乎有困難，因為方程中沒有不與變數相乘的項，但事實上這是錯誤的。i 1 或 n 1 時，有一項涉及邊值 u 0u_0 、 u 1u_n ，由於兩值已知，可以簡單地代入，就得到了具有非平凡解的非齊次線性方程組。 相關條目 Modelica 語言及軟體 註釋 參考文獻 J C Butcher Numerical methods for ordinary differential equations Ernst Hairer Syvert Paul Nørsett and Gerhard Wanner Solving ordinary differential equations I Nonstiff problems second edition Springer Verlag Berlin 1993 Ernst Hairer and Gerhard Wanner Solving ordinary differential equations II Stiff and differentialalgebraic problems second edition Springer Verlag Berlin 1996 This twovolume monograph systematically covers all aspects of the field Arieh Iserles A First Course in the Numerical Analysis of Differential Equations Cambridge University Press 1996 hardback paperback Textbook targeting advanced undergraduate and postgraduate students in mathematics which also discusses numerical partial differential equations John Denholm Lambert Numerical Methods for Ordinary Differential Systems John Wiley Sons Chichester 1991 Textbook slightly more demanding than the book by Iserles 外部連結 Joseph W Rudmin Application of the ParkerSochacki Method to Celestial Mechanics 1998 Dominique Tournès Lintégration approchée des équations différentielles ordinaires 16711914 thèse de doctorat de luniversité Paris 7 Denis Diderot juin 1996 Réimp Villeneuve dAscq Presses universitaires du Septentrion 1997 468 p Extensive online material on ODE numerical analysis history for Englishlanguage material on the history of ODE numerical analysis see for example the paper books by Chabert and Goldstine quoted by him C library with rigorous ODE solvers INTLAB A library made by MATLABGNU Octave which includes rigorous ODE solvers Category 常微分方程