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

常微分方程邊值問題的格林函數

一旦你接受了「系統對一次尖銳戳擊的響應就道盡了一切」,剩下的唯一問題便是:如何真正把那個響應造出來。本篇把配方遞到你手上——兩個齊次解,在源點處由一條連續性規則和一道導數跳躍黏合起來——並向你精確指明那道跳躍從何而來。

那一戳便知曉一切

本級的上一篇已經向你推銷了那個核心技巧,所以在動手之前,讓我們再點它一次名。你有一個線性算子——比如拉緊的弦的 L[u] = -(d^2u/dx^2),或更一般的 L[u] = (d/dx)(p du/dx) + q u——而你想在區間 [a, b] 上、兩端都被釘死的條件下,求解非齊次[[boundary-value-problem|邊值問題]] L[u] = f(x)。格林的美妙想法是:不要一下子去問那個雜亂的載荷 f,而改問:系統對位於某一處 s 的單個無窮集中的單位戳擊如何響應?這個響應,作為觀測點 x 的函數,就是[[greens-function|格林函數]] G(x, s)。一旦你擁有它,整個問題的答案不過是一個疊加——u(x) = integral from a to b of G(x, s) f(x) ds——因為線性系統對一堆戳擊之和的回應,正是各個回應之和。

說得精確些,G(x, s) 是 L[G] = delta(x - s) 的解,並且服從與原問題相同的齊次邊界條件。這裡 delta(x - s) 是中心在源點 s 的[[dirac-delta-function|狄拉克 delta]]——記住先前那份誠實:它根本不是一個真正的函數,而是一個分佈,是越來越高、越來越窄、面積恆為一的尖峰的極限,唯有在積分之內才被賦予意義。正是這一微妙之處使得這套構造饒有趣味,因為一個真正的函數永遠無法等於一個尖峰。本篇的全部手藝,就是把那個古怪的右端項,化成一份你能親手執行的、徹底具體的配方。

四條要求把 G 完全釘死

下面這個關鍵領悟,把右端的一個分佈化成了尋常的微積分。在遠離源點之處——在每一個並不恰好等於 s 的 x 處——delta 不過就是零。於是在 s 的兩側,格林函數都滿足平平無奇的*齊次*方程 L[G] = 0,正是那個你早已知道如何求解的方程。源唯獨在單點 x = s 處顯露存在,而它在那裡的全部效應,都被濃縮進一條單一而尖銳的條件。所以 G 由兩段尋常光滑的部件搭成,一段對應 x < s,一段對應 x > s,再在 s 處由若干編碼著那一戳的規則縫合起來。

對一個二階算子,四條要求就把 G 完全定死,而把這四條同時擺在眼前是值得的。其一,邊界條件:G 必須服從問題自身的齊次邊界條件——對兩端固定的弦,G(a, s) = 0 且 G(b, s) = 0。其二,離源處的齊次方程:對一切不等於 s 的 x,在兩側各自地,L[G] = 0。其三,源點處的連續性:G 本身必須在 x = s 處連續——弦是被戳,不是被扯斷,所以它沒有豁口。其四,跳躍條件:一階導數 dG/dx 在你越過 s 時必須發生一道突然的、可計算的跳躍。前三條感覺很自然;第四條才是關鍵所在,接下來兩節先把它造出來,再把它掙到手。

那道跳躍從何而來

為什麼一階導數必須跳躍,而且恰恰跳那麼多?這個論證很短,值得一看,因為它讓 delta 做了它唯一的本職——積分為一。取自伴形式下的定義方程 (d/dx)(p dG/dx) + q G = delta(x - s),把兩邊在一個刀刃般薄的窗口上、從 s 減 epsilon 到 s 加 epsilon 積分,再讓 epsilon 縮向零。右端你恰好得到 1,因為 delta 面積為一,而窗口正跨在它的尖峰之上。左端,q G 項在極限裡毫無貢獻:G 連續且有界,於是它在一個趨零窗口上的積分也趨零。唯有那個導數項倖存,而由微積分基本定理,它的積分不過是 p dG/dx 在窗口兩緣處的取值之差。

把這兩半拼到一起,跳躍條件便徑直冒出來:p(s) 乘以 [ dG/dx 在 s 緊右側的值,減去 dG/dx 在 s 緊左側的值 ] 等於 1。換句話說,G 的導數在源點處*不連續*,當你跨過它時恰好躍變 1/p(s),而 G 本身則保持不斷。對取 L = -d^2/dx^2 的素弦,自伴係數為 p = -1,於是 G 的右導數減左導數等於 -1:當你從左向右越過頂點時,帳篷的斜率掉了一。這個單一的數字,就是 delta 留下的指紋,也是你單憑齊次方程絕拿不到的那一條信息。

配方,逐步而行

現在把一切組裝成一道你能在任何正則二階邊值問題上執行的程序。其思路是:在源的每一側,挑那個本就滿足該側邊界條件的齊次解——一半的條件白白搞定——再用連續性和跳躍來定下剩餘的兩個常數。你會需要 L[u] = 0 的[[fundamental-set-of-solutions|基本解組]],即那兩個獨立齊次解,每一個解都由它們搭成;求出它們,正是你在本卷較早處已經做過的、大一風格的活計。

  1. 求解齊次方程 L[u] = 0,找出兩個獨立解。把滿足 a 處左邊界條件的那個組合記作 u1,把滿足 b 處右邊界條件的那個組合記作 u2。(對弦,u1 = x - a 在 a 處歸零;u2 = x - b 在 b 處歸零。)
  2. 寫下兩段擬設:當 x 在 s 之下時 G(x, s) = A u1(x),當 x 在 s 之上時 G(x, s) = B u2(x)。左段已經服從 a 處的邊界,右段已經服從 b 處的邊界。只剩下兩個未知常數 A 與 B,而它們可以依賴於 s。
  3. 在源點處施加連續性:兩段在那裡必須一致,所以 A u1(s) = B u2(s)。這是關於 A 與 B 的一個線性方程。
  4. 施加跳躍:在 s 處用右斜率減去左斜率,並令 p(s) 乘這個差等於 1。這給出 p(s) [ B u2'(s) - A u1'(s) ] = 1,即第二個線性方程。
  5. 解這個 2 乘 2 線性方程組求 A 與 B。出現的行列式恰是 p(s) 乘以 s 處的朗斯基行列式 W(u1, u2)——而一個基本事實讓這一切乾淨俐落:對自伴算子,p(x) W(x) 是一個常數,與 s 無關,於是這套代數齊齊塌縮。結果是 A = u2(s)/(pW) 與 B = u1(s)/(pW)。
  6. 把答案以其對稱形式讀出:G(x, s) = u1(x_<) u2(x_>) / (p W),其中 x_< 是 x 與 s 中較小者,x_> 是較大者。這一條公式一舉覆蓋兩側,並顯露出對稱性 G(x, s) = G(s, x)——源在 s 處對 x 的效應,等於源在 x 處對 s 的效應。

一頂帳篷,從頭搭到尾

讓我們在盡可能乾淨的例子上跑一遍配方,好讓你看著每一個數字逐一現身:[0, 1] 上單位張力的弦,兩端夾緊,滿足 -G'' = delta(x - s)。齊次方程不過是 G'' = 0,其解是直線。穿過左牆的直線是 u1 = x(它在 0 處歸零);穿過右牆的直線是 u2 = x - 1(它在 1 處歸零)。於是 s 之下,G = A x;s 之上,G = B (x - 1)。s 處的連續性給出 A s = B (s - 1)。該算子的自伴係數為 p = -1,所以跳躍條件是 -[ B - A ] = 1——也就是右斜率 B 減去左斜率 A 必須等於 -1。

Problem:  -G'' = delta(x - s)  on [0,1],   G(0)=0,  G(1)=0

Homogeneous G''=0  ->  straight lines.
   left  piece (vanishes at 0):   G = A x
   right piece (vanishes at 1):   G = B (x - 1)

Two gluing conditions at x = s:
   continuity:        A s   =  B (s - 1)
   jump (p = -1):     B - A  =  -1          [ right slope - left slope ]

Solve:    A = 1 - s ,    B = -s

               | (1 - s) x        for  0 <= x <= s      (rising line)
   G(x, s) =   |
               | s (1 - x)        for  s <= x <= 1      (falling line)

        = (1 - x_>) x_<          x_< = min(x,s),  x_> = max(x,s)

   Peak height at x = s :   G(s, s) = s(1 - s)   ->  a tent.
   Note the symmetry:       G(x, s) = G(s, x).
整套構造濃縮在一張卡片上:兩段直線,由連續性和一個單位的斜率下落黏合,給出帳篷 G(x, s) = (1 - x_>) x_<——而它關於 x 與 s 對稱。

解那兩個小方程給出 A = 1 - s 與 B = -s,於是 G(x, s) 在左側是 (1 - s) x、右側是 s (1 - x)——正是一頂在源正上方、峰高 s(1 - s) 的帳篷。現在收取回報。要解真正的問題 -u'' = f(x)、弦被夾緊,你再也不必碰那個微分方程;你只需對帳篷積分:u(x) = integral from 0 to 1 of G(x, s) f(s) ds。一個格林函數,只算一次,就打發掉你今後掛在這根弦上的*每一個*載荷 f。這正是格林為你換來的槓桿——並請留意,它完全來自求解一個齊次方程加上黏合,從未正面硬碰那個 delta。

小字,以及它通向何處

對這套構造何時奏效要誠實。它要求齊次問題在給定邊界條件下*只有平凡解*——等價地說,零不是該算子的本徵值。倘若有一個非零的 u 在兩端邊界條件都已滿足的情況下解出 L[u] = 0,那麼朗斯基行列式分母 p W 就會是零,公式隨之炸裂;那時根本沒有格林函數,而邊值問題要麼無解、要麼有無窮多解。這恰是奇異矩陣的連續回響:當 L 有非平凡零空間時你無法對它求逆,正如你無法對一個帶零本徵值的矩陣求逆。這套配方默默假定了你身處可逆的情形。

還有兩點說明讓你保持誠實。我們在例子裡見到的對稱性 G(x, s) = G(s, x) 並非弦的巧合——只要算子是自伴的、邊界條件屬於對稱的斯圖姆–劉維爾那一類,它就成立,而對非自伴問題它會失效,那時你必須改用算子的伴隨。還有,疊加 u(x) = integral of G(x, s) f(s) ds 恰恰是[[variation-of-parameters|參數變易法]]沿另一條路徑所產出的東西;格林函數實際上就是參數變易法,只不過把積分限安排得從一開始便把邊界條件烤了進去,於是答案無需再做任何調整。

退一步,看看你如今握有什麼。格林函數是微分算子的連續逆——矩陣逆的對應物——而你只憑兩個齊次解、一處連續性匹配、以及那一道可計算的導數跳躍,就能親手把它造出來。同樣的構造在以後每一種情形裡反覆出現:變的只是齊次解和係數 p。本級隨後的指南把它繼續向前推——把對稱性與自伴的關聯弄精確,再到把 G 重建為對你上一級遇到的那些斯圖姆–劉維爾本徵函數求和的本徵函數展開,最後躍向偏微分方程,那裡同樣的「戳一下再疊加」想法解答了熱方程與波方程。