跳轉到

3.1 Picard 疊代法#

本章導言#

前兩章我們「解」方程——但什麼保證解存在?又保證只有一個?十七、十八世紀的數學家把存在性視為理所當然:方程既然寫得出來,解想必在那裡。這種樂觀在十九世紀遭到清算,而清算的武器是法國數學家 Émile Picard(皮卡,1856–1941) 的逐次逼近法(méthode des approximations successives, 1890):把微分方程改寫成積分方程,然後疊代——從一個粗糙猜測出發,反覆代入、改進,讓解自己「長」出來。本節講述這個既是理論基石、又是數值演算法的雙重身份方法。

從微分到積分:第一步轉換#

考慮初值問題

\[ y' = f(x, y), \qquad y(x_0) = y_0. \]

兩邊從 \(x_0\) 到 \(x\) 積分:

\[ y(x) = y_0 + \int_{x_0}^{x} f\big(t,\, y(t)\big)\, dt. \tag{$\ast$} \]

\((\ast)\) 是積分方程:未知函數同時出現在等號兩邊(右端積分號內)。微分方程與積分方程等價(一階可微 ↔ 連續且滿足 \((\ast)\) ),但積分形式的優勢巨大:

  1. 積分是平滑運算:右端的 \(y\) 只需連續,左端的積分自動使 \(y\) 可微——積分方程比微分方程「條件更溫和」;
  2. 初值已內建: \(y(x_0) = y_0\) 直接寫進公式,不再需要另加條件;
  3. 適合疊代:右端是「把 \(y\) 輸入機器、輸出更好的 \(y\) 」的變換——疊代的完美形狀。

Picard 疊代:讓解自己長出來#

定義(Picard 算子):

\[ \phi_0(x) \equiv y_0, \qquad \phi_{n+1}(x) = y_0 + \int_{x_0}^{x} f\big(t,\, \phi_n(t)\big)\, dt. \]

Picard 定理(存在部分的靈魂):若 \(f\) 與 \(f_y\) 在矩形 \(R = \{|x - x_0| \le a,\ |y - y_0| \le b\}\) 上連續,則在區間 \(|x - x_0| \le \alpha\) ( \(\alpha = \min(a, b/M)\) , \(M = \max_R |f|\) )上,函數列 \(\phi_n\) 均勻收斂到 \((\ast)\) 的唯一解。

每一步的幾何意義: \(\phi_0\) 是水平線; \(\phi_1\) 是「沿 \(\phi_0\) 的斜率場走出的折線(的光滑版)」; \(\phi_2\) 沿 \(\phi_1\) 的斜率走……每一代都更貼合真解。疊代 = 在斜率場中反覆改道,直到路與場一致。

壓縮映射:為什麼疊迭代斂#

疊代收斂的引擎是壓縮:兩個猜測 \(u, v\) 經機器處理後更接近——

\[ |\Phi(u) - \Phi(v)| \le k\, |u - v|, \qquad k < 1. \]

這是 Stefan Banach(巴拿赫,1892–1945) 1922 年不動點定理(contraction mapping principle,其博士論文的主題)的應用:完備空間上的壓縮映射有唯一不動點,且從任意起點疊代都收斂到它。Picard 算子的壓縮性來自 Lipschitz 條件:

\[ |\Phi(u) - \Phi(v)| \le \int_{x_0}^x \big|f(t, u) - f(t, v)\big|\, dt \le L \int_{x_0}^x |u - v|\, dt \le L \alpha \cdot \sup|u - v|, \]

故只要 \(L\alpha < 1\) 即壓縮(嚴格證明中用 \(L\alpha \le \alpha' < 1\) 的選取與靴帶式延拓,見 3.2 節)。

Banach 不動點定理的威力:它同時給出存在、唯一、疊代收斂、誤差估計四件套:

\[ |\phi_n(x) - y(x)| \le \frac{(L\alpha)^n}{1 - L\alpha}\, \max|\phi_1 - \phi_0|. \]

誤差按 \(k^n\) 幾何衰減——這是理論與計算的雙重承諾。

歷史脈絡:疊代思想的三次登場#

年份 人物 貢獻
1838 Liouville 二階方程的逐次逼近(特例、未形成一般理論)
1876 Lipschitz 改進 Cauchy 的存在性證明條件
1890 Picard 系統的逐次逼近法,證明存在唯一
1893 Picard 應用到二階與積分方程
1922 Banach 壓縮映射原理,統一框架
1960s 數值分析界 Picard 疊代成為積分方程與非線性系統的標準數值法

注意 Picard 的方法不是憑空而降:Cauchy 1824 年巴黎理工學院講義中已有存在性證明的先驅版本(用歐拉折線的極限),但未發表且流傳甚少。同一個證明被發明三次(Cauchy、Lipschitz、Picard),最後一次才普及——科學史上的「多重發現」定律。

疊代的計算演示#

\(y' = x + y\) 、 \(y(0) = 1\) :

  • \(\phi_0 = 1\) ;
  • \(\phi_1 = 1 + \int_0^x (t + 1)\, dt = 1 + x + \frac{x^2}{2}\) ;
  • \(\phi_2 = 1 + \int_0^x \big(t + 1 + t + \frac{t^2}{2}\big) dt = 1 + 2x + \frac{3x^2}{2}\cdot\frac{1}{?} \cdots\) (展開得 \(1 + 2x + \frac{3x^2}{2} + \frac{x^3}{6}\) 的形式)。

真解是 \(y = 2e^x - x - 1 = 1 + x + x^2 + \frac{x^3}{2} + \frac{x^4}{6} + \cdots\) 。比較可見 \(\phi_n\) 逐步「長出」Taylor 級數的更多項——Picard 疊代是 Taylor 級數的自動生成機,但不需要解是解析的(只要連續可微即可)。

一個具體例題#

例題 3.1.1:用 Picard 疊代解 \(y' = y^2\) 、 \(y(0) = 1\) 的前三個近似,與真解 \(y = \frac{1}{1 - x}\) 比較,並討論疊代在爆破點附近的行為。

解:

  • \(\phi_0(x) = 1\) ;
  • \(\phi_1(x) = 1 + \int_0^x \phi_0^2\, dt = 1 + \int_0^x 1\, dt = 1 + x\) ;
  • \(\phi_2(x) = 1 + \int_0^x (1 + t)^2\, dt = 1 + \int_0^x (1 + 2t + t^2)\, dt = 1 + x + x^2 + \frac{x^3}{3}\) ;
  • \(\phi_3(x) = 1 + \int_0^x \phi_2^2\, dt = 1 + x + \frac{3x^2}{2}\cdot\frac{?}{} \cdots\) (展開為 \(1 + x + \frac{3}{2}x^2 + \frac{4}{3}x^3 + \frac12 x^4 + \frac{x^5}{9}\) 級形式)。

真解 \(\frac{1}{1-x} = 1 + x + x^2 + x^3 + x^4 + \cdots\) 。比較:

係數 真解 \(\phi_2\) \(\phi_3\)
\(x^0\) 1 1 1
\(x^1\) 1 1 1
\(x^2\) 1 1 \(\frac32\)
\(x^3\) 1 \(\frac13\) \(\frac43\)
\(x^4\) 1 — \(\frac12\)

可見 \(\phi_n\) 的前幾項逐步逼近真解,但係數逐項而言不單調改進——疊代的好壞要以 \(\sup_{|x - 0| \le \alpha}|\phi_n - y|\) 整體衡量(均勻收斂而非逐項比較)。

爆破附近的行為:真解在 \(x = 1\) 爆破;疊代在 \(\alpha = \min(a, b/M)\) 的縮短區間上工作——取 \(b = 2, M = \sup(y^2) \le 9\) ( \(|y - 1| \le 2\) )則 \(\alpha = 2/9\) ,理論保證只覆蓋 \(|x| \le 2/9\) 。Picard 定理的區間是保守的:它保證「附近一定有解」,而真解活到 \(x = 1\) ——存在區間的實際大小與定理保證的大小可以差很遠,這正是 3.3 節延拓理論要回答的問題。

歷史啟示#

  • 存在性不是明顯的:把「方程寫得出來」與「解存在」分離,是十九世紀分析學成熟的最大標誌之一。此後數學家學會問:條件是什麼?反例在哪?
  • 建構性證明的價值:Picard 的證明不僅說「存在」,還給出逼近解的程序——一百年後它直接變成數值演算法。證明的方法論比結論更長壽。
  • 抽象的回報:Banach 把 Picard 的特技抽象為壓縮映射,一個定理覆蓋 ODE、積分方程、隱函數、分形(IFS 構造)等幾十個領域——抽象不是逃離具體,而是復用具體。

與其他章節及領域的關聯#

  • 3.2 節:Picard 定理的完整表述(含 Lipschitz 條件與唯一性)。
  • 3.3 節:疊代收斂區間與解的真實存在區間之差,由延拓理論填補。
  • 10.1 節:Euler 折線法是 Picard 積分方程的離散化;Picard 疊代本身也是實用數值法(尤其對積分方程)。
  • 5.1 節:疊代「長出」冪級數的觀察,連接 Picard 與級數解法。
  • 2.1 節:線性方程的積分公式其實就是 Picard 疊代一次收斂的情形( \(f\) 線性時疊代一步到「正確的核」)。
  • 函數分析:Banach 空間、完備性、不動點——Picard 方法是二十世紀泛函分析的開國文獻之一。
  • 計算機科學:不動點疊代在程式語言語義(denotational semantics, Scott 1970s)與資料庫查詢(Datalog 不動點)中是基礎工具。

練習#

  1. 對 \(y' = x + y^2\) 、 \(y(0) = 0\) 寫出 \(\phi_1, \phi_2, \phi_3\) (展開多項式至三次項)。
  2. 對 \(y' = y\) 、 \(y(0) = 1\) 計算 \(\phi_n\) 的一般式,證明 \(\phi_n = \sum_{k=0}^{n} \frac{x^k}{k!}\) ,並解釋這與 \(e^x\) 的關係。
  3. 對 \(y' = x^2 + y^2\) 、 \(y(0) = 1\) ,取 \(a = b = 1\) ,估計 \(M\) 與 Picard 保證區間 \(\alpha\) ;再比較真解的存在範圍(數值或圖形觀察)。
  4. 證明:若 \(f(x, y)\) 對 \(y\) 滿足 Lipschitz 條件(常數 \(L\) ),則 Picard 算子滿足 \(|\Phi(u) - \Phi(v)| \le L|x - x_0|\, \sup|u - v|\) (在 \(|x - x_0| \le \alpha\) 上),並據此選 \(\alpha\) 使壓縮成立。
  5. 思考題:Picard 疊代需要每步積分 \(\int f(t, \phi_n(t))\, dt\) ,這在「手算」時常比原方程更難。那麼它的價值何在?請從(i)理論存在性、(ii)證明方法、(iii)數值離散化三個角度回答。

進階研讀:疊代思想的五個深化場景#

場景一:Picard 疊代 vs Euler 折線。兩者都是「逐步修正」,但 Euler 法在時間方向離散(步進 \(h\) ),Picard 在函數空間疊代(整條曲線一次更新)。數值分析中,Picard 型疊代用於隱式方法(隱式 Euler、BDF,10.1 節)的每步求解——剛性方程的求解器核心就是每一步做一個 Picard/Newton 疊代。理論方法與數值方法的界線,比教科書章節劃分模糊得多。

場景二:非壓縮的補救。 \(f_y\) 連續但 \(L\alpha \ge 1\) 時,直接疊代可能不收斂。補救一:縮短區間 \(\alpha\) ;補救二:帶阻尼的疊代 \(\phi_{n+1} = (1 - \omega)\phi_n + \omega \Phi(\phi_n)\) ( \(\omega\) 小時收斂放寬,數值線性代數的 SOR 思想);補救三:Newton–Kantorovich 疊代(二次收斂,1948)。壓縮不成立時,工程師用鬆弛因子續命。

場景三:疊代與級數的深層關係。例題顯示 \(\phi_n\) 的 Taylor 係數逐步逼近真解。更系統地:對解析 \(f\) ,Picard 疊代在解析函數空間中收斂,其極限的級數展開與Adomian 分解法(1980s,把 \(f\) 拆為 \(Ny\) 級數逐項疊代)同構——「疊代即級數生成器」在二十世紀被工程界重新發明。

場景四:泛函分析的誕生。Banach 1922 年論文把 Picard 的論證搬到完備度量空間,定義了 Banach 空間。同時期 Hilbert 空間理論(1927–1932,von Neumann)處理量子力學。微分方程的存在性問題,是抽象空間理論的第一推手——沒有 Picard 的積分方程,就沒有泛函分析的性格。

場景五:不動點的當代應用。區塊鏈共識的收斂分析、機器學習中 GAN 的訓練動力學(把訓練視為算子疊代)、影像配準的迭代最近點(ICP)——都是不動點疊代的變奏。壓縮條件不成立時收斂性存疑,這正是 GAN 訓練不穩定的數學原因之一——一百零六年前的定理,仍在解釋最新的工程難題。

補充:Cauchy 1824 年講義的命運#

Cauchy 在 1823–1824 年巴黎理工的講義中,用歐拉折線的極限證明了 \(f, f_y\) 連續時初值問題解的存在性——比 Picard 早六十六年,條件更接近今日教材。但講義未刊行,手稿到 1980 年代才被數學史家(Lützen、Grattan-Guinness)整理確認。Cauchy 的優先權在教科書中常被遺忘;本節定名「Picard 疊代」遵循文獻慣例,但讀者應知這是「發明三次、命名一次」的典型案例。

補充:誤差估計的使用示範#

在 \(L\alpha = 0.9\) 、 \(\max|\phi_1 - \phi_0| = 0.5\) 的情形,十步後誤差界 \(\le \frac{0.9^{10}}{0.1} \times 0.5 \approx 1.74\) ——看起來很大?因為 \(0.9^n\) 衰減慢。若 \(L\alpha = 0.5\) : \(\frac{0.5^{10}}{0.5} \times 0.5 = 0.001\) 。壓縮常數 \(k\) 的小幅改善,帶來誤差的指數級改善——這就是為什麼理論家在意 \(L\) ,工程師在意步長。

名詞速查表(本節出現的核心術語)#

  • 積分方程:未知函數在積分號內出現的方程。
  • Picard 疊代: \(\phi_{n+1} = y_0 + \int f(t, \phi_n)\, dt\) 的逐次逼近。
  • 均勻收斂: \(\sup_{x} |\phi_n - y| \to 0\) ,整體同步收斂。
  • 壓縮映射: \(|\Phi(u) - \Phi(v)| \le k|u - v|\) , \(k < 1\) 。
  • 不動點: \(\Phi(y) = y\) 的點;積分方程的解即 Picard 算子的不動點。
  • Banach 不動點定理:完備空間上壓縮映射有唯一不動點,疊代收斂(1922)。
  • 誤差估計: \(|\phi_n - y| \le \frac{k^n}{1 - k} \max|\phi_1 - \phi_0|\) 。
  • 建構性證明:證明中附帶求出對象之程序的證明。
  • 多重發現:同一結果由多人獨立完成(Cauchy/Lipschitz/Picard)。

年表速查(本節涉及的關鍵年份)#

  • 1824:Cauchy 講義中的存在性證明(未刊行)。
  • 1838:Liouville 的逐次逼近先驅工作。
  • 1876:Lipschitz 條件。
  • 1890:Picard 逐次逼近法發表。
  • 1922:Banach 壓縮映射原理(博士論文)。
  • 1948:Kantorovich 的 Newton 型疊代收斂理論。
  • 1960s:Picard/Newton 疊代進入剛性 ODE 求解器。
  • 1980s:Adomian 分解法。

深化問答三則#

問:Picard 疊代與「猜答案再驗證」有何本質不同? 答:猜答案是被動驗證(成敗在天);Picard 疊代是主動逼近——每一步都有嚴格的誤差收縮保證,且初值任意(從 \(y_0\) 起步即可)。數學上,前者是「檢驗」,後者是「算法」;後者依賴壓縮性,而壓縮性來自 Lipschitz 條件。有條件的收斂保證,是算法與運氣的分界線。

問:為什麼積分方程比微分方程「更容易」? 答:兩個原因。(1)積分把連續函數變成可微函數——空間條件放寬;(2)初值內建於積分下限——邊界條件消失。把問題搬到一個「約束更少、結構更好」的表示中求解,這一策略在數學中反覆成功(Laplace 變換第 8 章、對數座標、傅立葉變換)。換一種寫法,常比換一種方法更有力。

問:疊代收斂到唯一解,「唯一」真的需要證明嗎? 答:需要,且有反例: \(y' = 2\sqrt{|y|}\) 、 \(y(0) = 0\) 有無窮多解( \(y = 0\) 、 \(y = x^2\) 、以及「先停後走」的拼接族)。此處 \(f_y = \frac{1}{\sqrt{|y|}}\) 在 \(y = 0\) 無界,Lipschitz 條件失效——疊代可能收斂到其中一個解,但其他解也合法。存在與唯一是兩個獨立的命題,這正是下一節的主題。

(本節完)