JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

相容性、穩定性、收斂性:拉克斯等價

你已經建好了顯式與隱式格式——但你怎麼「知道」它們吐出的數字會趨近真解?來認識這個三腳架(相容性、穩定性、收斂性),以及把它們繫在一起的那條定理。

藏在一個問題裡的三個問題

在前兩篇指南裡,你鋪了一張網格,把導數換成模板,並建好了格式——FTCS、BTCS、克蘭克-尼科森——讓一條熱分布沿時間往前推進。每一個都產生一張數表。但有個惱人的問題還在:當你細化網格時,這些數字真的會趨近偏微分方程的真解嗎,還是你只是在生產看起來很有自信的胡言亂語?這個唯一的目標——數值答案隨網格縮小而趨近真相——叫做收斂性,也是你最終唯一在乎的事。

麻煩在於收斂性極難正面檢查:要把你的答案跟真解比較,你得先有真解——而那恰恰是你沒有的東西。你之所以在計算,正是因為這個 PDE 無法手算。於是這門學問的精妙之處,就是把這一個看似不可能的問題拆成兩個可檢查的問題。第一個是相容性:當 h 與 k 縮小時,離散方程是否真的會變回你本來想解的那個 PDE?第二個是穩定性:當你一步一步走下去時,小誤差會保持小,還是會像滾雪球一樣脹大?

相容性:你解的到底是不是對的方程?

相容性是最低限度的健全性檢查,而它有精確的意義。取 PDE 的「真解」代入你的差分格式。真解不會精確滿足這個離散方程——會剩下一個殘量,叫做局部截斷誤差,它衡量真解未能遵守模板的程度。若這個殘量在網格間距 h、k 趨於零時趨於零,則格式相容。「不」相容的格式解的完全是別的方程,再怎麼細化網格也救不了它。

你用泰勒級數計算截斷誤差——正是當初建模板時用的同一個工具。把每個格值繞中心點展開,PDE 自身的各項相消,剩下的誤差是 h 與 k 各冪次的級數。存活下來的最低冪次給出格式的。對熱方程 u_t = alpha*u_xx 的 FTCS,殘量算出來是一個 O(k) 量級的項加上一個 O(h^2) 量級的項:時間一階、空間二階,寫成 O(k + h^2)。克蘭克-尼科森藉由置中於半時間步,把時間部分提升到 O(k^2 + h^2)。兩者都隨網格縮小而消失,故兩者皆相容。

Plug the TRUE solution u into FTCS for u_t = alpha*u_xx :

  (u_j^{n+1} - u_j^n)/k  -  alpha*(u_{j-1}^n - 2 u_j^n + u_{j+1}^n)/h^2

  = [u_t - alpha*u_xx]              <- the PDE: equals 0
    + (k/2) u_tt                    <- O(k)   time error
    - (alpha h^2 / 12) u_xxxx       <- O(h^2) space error
    + (higher-order terms)

  local truncation error = O(k) + O(h^2)  ->  0  as k,h -> 0   (CONSISTENT)
泰勒展開,看著 PDE 相消,再從殘量讀出階數。

穩定性:小錯會滾成雪球嗎?

單憑相容性幾乎毫無用處,原因很生動。相容的格式在每一步都有微小的截斷誤差——但一個數值解長達數千步,而每一格還都有來自浮點運算的微小捨入閃失。穩定性問的是:當你推進時,這些閃失會保持有界,還是每一步都把它們放大,使它們脹成淹沒真實答案的滔天巨浪?你在 FTCS 上具體見過這點:把比值 r = alpha*k/h^2 推過 1/2,幾步之內數字就引爆成劇烈振盪。

檢查穩定性的日常工具是馮諾伊曼分析——正是下一篇指南的主題——所以這裡只先抓住這個想法:寫下單一個誤差波,看每一步把它乘上什麼因子(放大因子 g),並要求每個波數都有 |g| <= 1,使任何模式都不會無界成長。關鍵且誠實的一點是:穩定性是那條真正「微妙」的腿。相容性你幾乎是機械地用泰勒級數就能查;穩定性卻是看起來完全合理的格式悄悄失敗之處。FTCS 相容卻只條件穩定;BTCS 與克蘭克-尼科森則無條件穩定。顯式與隱式格式的那個差別,骨子裡就是穩定性的差別。

拉克斯等價定理:那座橋

現在來收割。拉克斯等價定理(也叫拉克斯-里希特邁耶定理)陳述得乾淨得驚人:對一個適定的線性初值問題與一個相容的有限差分格式,該格式「收斂」,若且唯若它「穩定」。化成口號,就是每個數值分析者口袋裡都揣著的那句:相容 + 穩定 = 收斂。那個困難、不可觀測的問題(我的答案會抵達真相嗎?)被換成兩個可檢查的問題,而一旦相容性確立,穩定性就「等價於」收斂——你藉由證明你真正能證明的部分,拿到了你想要的獎品。

看看為何兩條腿都不能獨撐。相容但不穩定的格式目標正確——它趨向 PDE——但它的誤差爆炸,於是數字飛向無窮、永不收斂:想想用 r = 0.6 跑的 FTCS。穩定但不相容的格式把誤差壓得有界,卻忠實地在解「錯的」方程,於是數字安穩地停在錯誤答案上。唯有兩者皆成立,數字才停在「對的」答案上。這條定理正是為何每本教科書都花好幾頁談穩定性、卻幾乎不談收斂證明:對相容的格式,證明穩定性「就是」證明收斂。

  1. 確認問題是適定且線性的(熱方程與波動方程符合;定理就活在這裡)。
  2. 查相容性:把格式泰勒展開,看著 PDE 相消,確認截斷誤差在 h、k -> 0 時 -> 0,並讀出階數。
  3. 查穩定性:跑馮諾伊曼分析,找出放大因子 g 與「所有波數皆 |g| <= 1」這個條件。
  4. 援引拉克斯:相容 + 穩定 => 收斂——不需另作一個無法觀測的收斂證明。

它在實務上告訴你什麼——以及它在哪裡止步

把這套流程跑在熱方程的 FTCS 上,整個故事就嵌合起來。相容性:階為 O(k + h^2),故截斷誤差消失。穩定性:馮諾伊曼給出 g = 1 - 4r*sin^2(theta/2),它恰當 r = alpha*k/h^2 <= 1/2 時滿足 |g| <= 1。依拉克斯,FTCS 因此「收斂」,若且唯若你保持 r <= 1/2——而當它收斂時,整體誤差繼承相容性的階,按 O(k) + O(h^2) 下降。這正是收斂階的實務意義:把 h 減半(並把 k 縮為四分之一以待在穩定界內),誤差約降為四分之一。隱式格式完全甩開了 r <= 1/2 這條繩,這也正是你在剛性問題上會伸手去拿它們的原因。

對細則要誠實,因為這句口號常被過度套用。拉克斯定理陳述於「線性」、適定的問題,並假設相容性在合適的範數下成立。對非線性 PDE——可壓縮流中的震波、紊流——並沒有這麼乾淨的等價:相容加線性穩定「不」保證收斂到物理上正確(滿足熵)的解,你需要更強的機械(Lax-Wendroff 定理、全變差遞減界、熵條件)。也別忘了前面幾級談過的捨入地板:每個算出的答案都是近似的,浮點運算不是精確的實數算術,所以把 h 無限縮小並非愈縮愈好——過了某一點,捨入誤差又會悄悄爬回來。收斂性是一個「當 h 趨於零」的承諾,而非對你實際跑的那一張有限網格的保證。