基礎:演算法、近似與誤差

離散化後求解流程

離散化後求解流程是計算數學的總食譜:你無法把連續問題交給電腦,所以先把它變成一個有限的代數方程系統(離散化),再用數值線性代數或迭代去解那個有限系統(求解)。幾乎每個真實模擬——熱流、流體力學、結構應力、選擇權定價——都走這條兩階段的路。

具體而言,連續問題(比如某區域上的微分方程)在有限的網格上被近似:每個導數變成有限差分、每個積分變成求積和、未知函數變成節點上一串有限的值。這把「找一個滿足微分方程的函數」換成「找一個滿足 A x = b 的向量 x」(對非線性問題則是用牛頓法處理的非線性系統)。離散化引入離散化(截斷)誤差,由網格間距 h 控制;解所得的代數系統引入捨入誤差,若是迭代則還有迭代誤差。即使程式把這兩階段交織在一起,它們在概念上仍是分開的:一種誤差來自網格,另一種來自算術與求解器。

把流程看成兩階段,能讓誤差預算保持誠實,並告訴你該往哪裡施力。若答案不準,問是哪一階段之過:網格太粗(加密以減離散化誤差——精度階研究確認它以正確速率下降)或求解不準或不穩定(更好的求解器、更緊的容忍度、更穩定的演算法)。這也解釋了為何這門學科有這麼多在講如何快速且穩定地解 A x = b:那個線性(或非線性)求解,是外層離散化反覆呼叫的內部引擎。一個告誡:無止境加密網格並非免費——更細的網格意味著遠多的未知數與算術,故即使離散化誤差下降,成本與累積的捨入也會上升。

要解一維熱方程,在網格上把二階導數於每個節點換成 (u_{i-1} - 2 u_i + u_{i+1})/h^2(離散化),組裝成三對角的 A x = b;再用托馬斯演算法以 O(n) 解它(求解)。網格間距控制離散化誤差;求解器控制捨入。

連續問題化為有限代數系統(離散化),再做數值求解——兩階段、兩個分開的誤差來源。

這兩階段有分開、可分別控制的誤差:來自網格的離散化誤差(靠加密 h 縮小)與來自算術的求解器/捨入誤差。診斷精度不佳時,先判定是哪一階段之過,再去更動任何東西。

又稱
discretize-then-solvemodel-discretize-solve離散化-求解先離散再求解