有限差分模板(finite-difference stencil)
導數是斜率的極限——當間距縮到零時的瞬時變化率。在網格上你無法取那個極限,於是退而求其次:用附近少數幾個格值、配上固定權重來估計導數。有限差分模板正是這道食譜:用哪些鄰點,以及每個乘上什麼數。它是你在每個節點蓋下的局部「餅乾模」,把導數變成算術。
最簡單的例子直接來自泰勒級數。一階導數的中心差分為 (u_{j+1} - u_{j-1}) / (2h),是權重為 (-1, 0, +1) / (2h) 的三點模板,誤差 O(h^2)。二階導數用對稱三點模板 (u_{j-1} - 2 u_j + u_{j+1}) / h^2,權重 (1, -2, 1) / h^2,同樣 O(h^2) 準確。前向與後向差分 (u_{j+1} - u_j) / h 與 (u_j - u_{j-1}) / h 是不對稱的兩點模板,只 O(h) 準確,但在邊界或時間推進時很有用。人們常把模板畫成小圖——一個十字或加號的點陣——一眼看出哪些鄰點餵進一次更新。
模板是有限差分法的原子:你把每個偏導數替換成它的模板再相加,就拼出 PDE 的離散化。模板的寬度在準確度、複雜度與邊界麻煩之間權衡——較寬的模板能達到更高階(五點一階模板可達 O(h^4)),卻需要更多鄰點,這在某些鄰點根本不存在的網格邊緣很棘手。每個模板還有一個主截斷誤差項,可從泰勒定理讀出,而那一項決定了格式的精度階。
對資料 0, 1, 4, 9, 16(即 h = 1 時的 x^2,點 0..4),在 j = 2 的中心差分給出 (9 - 1) / 2 = 4,恰是該處真導數 2x = 4。二階導數模板給出 1 - 2*4 + 9 = 2,恰是真值 f'' = 2。低次多項式被這些模板「精確」地微分。
三點模板把導數變成鄰點的加權和。
模板的精度階是對「h 縮小時主誤差項」的承諾,並非對某個固定 h 的承諾。而且 h 並非愈小愈好——對一階導數模板,把微小的差除以微小的 h 終會放大捨入誤差,故有一個最佳步長,過了它答案反而變糟。