常微分方程的數值方法

數值初值問題

大多數微分方程都沒有解的公式。你可以寫下規則 y' = f(t, y) 與起點 y(t0) = y0,但也許沒有任何熟悉函數的組合——沒有指數、正弦、對數——能解它。那該怎麼辦?你做的事就像一個帶著羅盤卻沒有地圖的登山者:從你所在之處出發,看看地面往哪個方向傾斜,朝那個方向踏一小步,然後再看一次。數值方法正是把微分方程化成這種一步一步的行走。

精確地說,數值初值問題就是這樣的設定:給定 f(t, y)、起始時刻 t0 與起始值 y0,算出真解在較晚時刻 t1、t2、t3、... 的近似值 y1、y2、y3、...,通常以步長 h 等距分布,使得 t_(n+1) = t_n + h。我們永遠得不到整個函數 y(t);我們得到的是一張數字表,一步一個,把它勾勒出來。微分方程告訴我們在任何所站之處的斜率 f(t_n, y_n),而每一種方法都是某種巧妙的規則,用這項斜率資訊從當前值 y_n 猜出下一個值 y_(n+1)。

這幾乎就是所有真實微分方程實際被求解的方式——在天氣模型、太空船軌跡、藥物劑量模擬、電路設計中。本學科其餘部分的解析方法只能精確解出一小串特殊的方程;數值方法則近似但良好地解出其餘的一切。代價是誠實:數值解永遠不精確。有兩種獨立的誤差悄悄潛入——近似步進的誤差(截斷誤差)與有限精度算術的誤差(捨入誤差)——一個好的實踐者總是大致知道它們有多大。

要以步長 h = 0.1 數值求解 y' = y, y(0) = 1,你用斜率 f(0, 1) = 1 從 y0 算出 y1,再用新點處的斜率從 y1 算出 y2,依此類推。走 10 步後到達 t = 1,得到 y(1) 的估計值;精確解告訴我們它應該是 e = 2.71828...。

數值解是一張向前行進的點表,而非公式。

數值方法只產生有限個近似點,而非連續函數。要問「步與步之間」的值需要插值,且每個值都帶有某種誤差,切勿假裝它為零。

又稱
IVPstepping an ODE forward向前推進的初值問題