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

格林函數:把算子反轉過來

特徵函數展開一次解出邊界值問題的一份成分。格林函數則一筆完成整件工作——它就是微分算子的逆,由對「單位一戳」的響應所搭成。來認識本梯級裡最優雅的求解器。

從拆分函數到反轉算子

回頭看看你在這個梯級裡攀過的路。你學會了提出一個邊界值問題,發現它的齊次版本在某些特殊的 lambda 值上才有非平凡解——也就是特徵值及其特徵函數——並利用正交性的魔法,把任意函數寫成一個特徵函數展開。這套展開是個漂亮的求解器:要解 L y = f,你把 y 與 f 都展開成特徵函數,再逐係數匹配。但留意它的代價。你得先找出每一個特徵函數,接著算出一整疊無窮多的積分,再把級數重新加總。這是把分而治之施加到未知函數本身那一層的做法。

格林函數問了一個更銳利的問題。它不去拆分答案 y,而去拆分微分算子的*工作*。邊界值問題寫作 L y = f,其中 L 是一個線性微分算子,例如 L = -d^2/dx^2 再黏上邊界條件。如今 L 是線性的——它服從疊加原理——所以它的行為就像一個作用在函數上的矩陣。那麼對一個矩陣方程 A x = f 你會怎麼做?你去求逆:x = A^(-1) f。本篇全部的把戲,就是去搭出 L 的逆——一個拿到任何 f 就直接把解 y 交給你的物件,只需一個積分,無須再去獵捕特徵函數。

單位一戳:對 delta 的響應

在概念上你怎麼把一個矩陣求逆?你看它如何作用在每一個基底向量 e_j 上,再把 A^(-1) 的各列組裝起來。基底向量的連續版本——一個完全集中在單一點上的尖峰——就是狄拉克 delta delta(x - s):除了 x = s 處之外處處為零,總積分卻為 1。把它想成在單一位置 s 上敲下的一記單位榔頭。格林函數 G(x, s) 字面上就是:當你在 s 處敲一下時,在 x 處量到的系統響應。它解的是 L G = delta(x - s),並帶著原問題所攜的同一組邊界條件。

回報就在這裡,而且整個想法只需一行。任何外力 f(x) 不過是一大堆細小戳擊的連續堆疊:f(x) = 對 s 積分 f(s) delta(x - s) ds。依疊加原理,對這一堆的響應,就是各個響應的堆疊。所以 L y = f 的解就只是 y(x) = 對 s 積分 G(x, s) f(s) ds。外力 f 是「在每個位置 s 該敲多重」的配方;G(x, s) 是對單獨一戳的響應;而那個積分把所有這些響應、以 f 為權重加總起來,重建出完整的答案。格林函數扛起了全部的難處——一旦你有了它,每一個外力 f 都被同一個積分解掉。

親手搭出 G:一個連續卻帶折角的東西

G(x, s) 究竟長什麼樣?在敲擊點 x = s 以外,delta 為零,所以 G 在那裡滿足*齊次*方程 L G = 0。於是在 s 的左側,G 是某個被挑來服從左邊界條件的齊次解;在 s 的右側,是另一個被挑來服從右邊界條件的齊次解。這兩塊在 x = s 處相會,而 delta 完全棲身於它們被接合的方式裡。這正是為何格林函數總是來成兩半——一個分段定義的函數,接縫就在 x = s。

兩個匹配條件在接縫處把兩半縫合起來,它們正是這套構造的靈魂。第一,G 必須在 x = s 處連續——值本身沒有跳躍。第二,它的斜率必須有一個精確的跳變:當你越過 s 時,導數 dG/dx 跳過一個固定的量。為何要折角而非平滑相接?因為一個折角的二階導數是個尖峰——正是我們想造出的那個 delta。G 裡一個純粹的折角,是讓 -d^2G/dx^2 交出一個單位強度 delta 的唯一辦法。對算子 -d^2/dx^2,斜率的跳變恰為 -1;對一般的史特姆-劉維爾算子,它由領導係數 p(s) 決定。

Build G(x,s) for  -y'' = f(x),  y(0)=0, y(1)=0   on [0,1]:

  homogeneous solutions of -y'' = 0  are  1 and x

  x < s :  G = a*x        (kills y(0)=0  since G(0)=0)
  x > s :  G = b*(1 - x)   (kills y(1)=0  since G(1)=0)

  match at x = s:
     continuity :  a*s        = b*(1 - s)
     slope jump :  b*(-1) - a  = -1        ( G' jumps by -1 )

  solve  ->  a = 1 - s ,  b = s

  G(x,s) =  x(1 - s)   for x <= s
            s(1 - x)   for x >= s        ( note: G(x,s) = G(s,x) )
拉緊弦算子的經典格林函數實作:兩塊齊次解、連續相接,並在敲擊點 s 處有一個單位折角的斜率跳變。

對稱性、自伴性,與譜公式

盯著上面的答案看:G(x, s) = G(s, x)。在 x 處感受到的、對 s 處一戳的響應,等於在 s 處感受到的、對 x 處一戳的響應。這種對稱性並非這個例子裡的好運巧合——它是「對稱矩陣有對稱的逆」這件事的連續迴響。它恰恰在 L 被寫成自伴形式時成立,而那正是史特姆-劉維爾問題被精心打造去披上的形式。當初那個保證了實特徵值與正交特徵函數的同一個自伴性,如今保證了格林函數的對稱。本梯級的眾多絲線,其實都是同一根線。

而就在這裡,本梯級的兩大求解器終於握上了手。拿起格林函數,把*它*用 L 的特徵函數 phi_n 展開。因為 L phi_n = lambda_n phi_n,反轉 L 不過是把每一塊除以它的特徵值,於是你得到譜公式:G(x, s) = 對 n 求和 phi_n(x) phi_n(s) / lambda_n。慢慢讀它——它說的是:逆算子由「取每個特徵函數、除以它的特徵值、再求和」搭成。這正是對稱矩陣那條 A^(-1) = 求和 (特徵向量)(特徵向量)^T / lambda 在函數世界的副本。特徵函數展開與格林函數從來就不是對手;它們是反轉同一個算子的兩張臉。

為何要費這個事——以及誠實的細則

你究竟換到了什麼?對給定的算子與邊界條件,格林函數只需算*一次*,之後它就用單一積分 y(x) = 對 s 積分 G(x, s) f(s) ds,為每一個外力 f 解出 L y = f。換掉樑上的載重、棒上沿線的熱源、區域裡的電荷——重跑一個積分,永不必重解微分方程。這正是物理與工程要伸手去拿格林函數的原因:它們是一個系統可重複使用的逆,是對單位源的響應,一旦知道,便回答關於該系統的每一個問題。它們也與參數變異法整齊地並排而立——後者本質上正是用一對基本解搭出同一個核。

現在來談誠實的界限,因為優雅並非萬能。上面那套乾淨的構造倚賴線性:格林函數只對線性算子存在,而你的方程一旦變成非線性,疊加便塌陷,整座建築——delta 分解、響應的加總、逆算子——隨之傾倒。非線性邊界值問題沒有格林函數;那些需要迭代或數值方法。這套方法還假設你真的能解出齊次方程以搭出 G 的兩塊,而對可變係數的算子,這件事本身可能就沒有閉式。

還有兩點值得帶走的告誡。第一,delta 函數並非尋常意義下的函數——它是一個分布,唯有當你把它當作積分裡的一道配方來對待時才是個嚴謹的物件;那個揮手帶過的「無限高尖峰」圖像是個有用的謊言,而積分定義使它變得誠實。第二,格林函數對邊界條件的依賴,不亞於它對算子的依賴:把 y(1) = 0 換成 y'(1) = 0,你就得從頭重建 G——它是*整個問題*的逆,連同旁側條件在內,而非單單那個赤裸算子的逆。把這兩點都記住,格林函數便成為你邊界值工具箱裡最強大的單一工具。