你要追捕的那個搭檔
你來到這裡,心中已經信服上一篇的招牌事實:若 u(x,y) 在一個漂亮的區域上是調和函數——意思是它滿足拉普拉斯方程 u_xx + u_yy = 0——那麼必存在第二個調和函數 v(x,y),即它的調和共軛,使得 f = u + i v 為解析函數。那一篇論證了共軛的存在。這一篇回答更接地氣的後續問題:給定一個具體的 u,我究竟要怎麼把 v 寫出來?答案是一份簡短、機械化的食譜,而它整個都直接源自柯西-黎曼方程。
這兩條方程就是整部引擎:u_x = v_y 與 u_y = -v_x。別把它們讀成「待檢查的限制」,而要讀成「待遵循的指示」。左邊是你現在就能算的東西——它們不過是你拿到的那個 u 的偏導數。右邊則是未知函數 v 的偏導數。所以柯西-黎曼方程,等於把 v 的兩個偏導數都用 u 的偏導數表達了出來。已知一個函數的兩個偏導數、再把函數本身找回來,正好是一個積分問題,這就是整場遊戲。
Given: u(x,y) harmonic -> want v with f = u + i v holomorphic
Cauchy-Riemann: u_x = v_y u_y = -v_x
so the GRADIENT of v is read straight off u:
v_x = -u_y v_y = u_x
integrate one, differentiate the result, match the other.食譜,一步一步來
以下是標準的四步流程。要盯緊的唯一細微處是:當你對 x 積分一個偏導數時,那個「積分常數」並不是常數——它是「另一個」變數 y 的某個未知函數。這個殘留的函數,正好就是第二條方程要釘住的對象。看看兩條柯西-黎曼方程如何協作:第一條搭出 v 的草稿,第二條修正第一條看不見的那一塊。
- 由給定的 u 算出 u_x 與 u_y。(可選的驗算:確認 u_xx + u_yy = 0,使共軛確實存在——若 u 不是調和的,沒有任何 v 行得通。)
- 用第一條方程 v_y = u_x,對 y 積分:v(x,y) = u_x 對 y 的積分 + g(x),其中 g(x) 是只含 x 的未知函數(對 y 積分的「常數」)。
- 把這份草稿 v 對 x 微分得到 v_x,再令它等於 -u_y(第二條方程)。一切都會抵消,只剩下對 g'(x) 的一個條件。
- 解出 g'(x),積分一次得到 g(x)(此時留下一個真正的積分常數——共軛只在相差一個可加實常數的意義下唯一),再代回。你現在就有 v 了。
一個小小的演練例子
讓我們在 u(x,y) = x^2 - y^2 上跑一遍食譜。先算偏導數:u_x = 2x、u_y = -2y。快速的調和性檢查,u_xx + u_yy = 2 + (-2) = 0,所以共軛存在。現在第二步:v_y = u_x = 2x,對 y 積分得 v = 2xy + g(x)。第三步:微分得 v_x = 2y + g'(x),這必須等於 -u_y = -(-2y) = 2y。比對之下,g'(x) = 0,故 g(x) = C,一個常數。於是 v = 2xy + C。
現在是令人滿足的回報。把 f = u + i v = (x^2 - y^2) + i(2xy) 組起來。這不是隨便的式子——它正是 z^2,因為 (x + i y)^2 = x^2 - y^2 + i(2xy)。食譜拿了光禿禿的實部 x^2 - y^2,就重建出整個解析函數 z^2(相差一個無害的常數 iC)。這就是「解析函數由其實部所決定」這句口號的實用面貌:單憑 u,加上柯西-黎曼的機器,就足以把 f 重建出來。
關於「那個」共軛是什麼意思,要誠實提醒一句。你收集到的 C 是任意實數,所以 v 只在相差一個可加實常數的意義下被決定;等價地說,f 只在相差一個純虛常數 iC 的意義下被決定。模糊性的全部範圍就到此為止——不多也不少。人們仍說「那個」調和共軛,是因為在連通區域上,固定 v 在單一點的值就消去了常數,使它真正唯一。也請留意這個不對稱:若 v 是 u 的共軛,則 u 「並不是」v 的共軛——而是 -u 才是,因為 v 的共軛把 u_x 與 u_y 的角色帶著一個負號互換了。
搜尋何時會失敗
在圓盤、矩形、整個平面——任何沒有洞的區域上,這套食譜總是成功。但在帶有一個洞的區域上,「單值」共軛的存在「並非」自動,而這正是要記住的那一個真正陷阱。標準的警世故事是 u(x,y) = log|z| = (1/2) log(x^2 + y^2),那個在去心平面(除原點外處處)上的教科書調和函數。它在其定義之處完美地調和,然而它唯一的候選共軛卻是輻角 v = arg z = theta——而每當你繞原點一圈,輻角就增加 2 pi,所以它無法在整個去心平面上被定義成單值函數。
機制上出了什麼錯,很有啟發性。在局部——在遠離原點的任何小片上——食譜跑得好好的,產出一個完美的 v;麻煩只在整體層面。當你試圖把那個局部的 v 沿著洞繞一圈、再延拓回起點時,它並不回到同一個值;它已經悄悄爬升了 2 pi。所以單值共軛在局部處處存在,卻無法跨越整個迴圈被縫成一個前後一致的函數。這正是逼使 log z 要切一道分支割線的那種多值性,只是從調和共軛這一側看過去罷了。
一個跳過積分的捷徑
一旦食譜做起來駕輕就熟,有一條更快的路值得知道,常稱為 Milne-Thomson 法,它倚靠一個你也許以維廷格導數之名見過的微妙東西。想法是:與其辛苦地把 v 建出來、再組裝 f = u + i v,不如直接重建解析函數的 f'、再對 z 積分一次。關鍵的觀察是:對解析函數 f,其導數為 f'(z) = u_x - i u_y(這不過是柯西-黎曼方程重新排列),而右邊只由 u 的偏導數組成。
讓它近乎魔術的訣竅在此。寫出 u_x(x,y) - i u_y(x,y),然後在它出現之處,把 x = z、y = 0 形式上代進去。結果是一個只含 z 的函數,而它就等於 f'(z)。對 z 積分、加上常數,你就直接得到 f——它的虛部就是你要的共軛 v,不需要對 g(x) 做兩次積分。在我們的例子上,u_x - i u_y = 2x - i(-2y) = 2x + 2iy;代入 x = z、y = 0 得 2z;積分得 f = z^2 + C,與長食譜產出的結果吻合。
要誠實說明為何「代 x = z、y = 0」這一招合法——它不是民間傳說。它行得通,是因為解析函數與它自己的冪級數一致,而在實軸上(y = 0、x = z 為實),那個級數早已對所有 z 編碼了整個函數,憑的正是同一個恆等定理事實:解析函數由它在一條直線上的值就被釘死。所以無論你偏愛耐心的四步積分還是俐落的一行代換,兩者都立基於同一個唯一的根基——柯西-黎曼方程——也都交出同一個 f。想要透明就走積分路線,想要速度就用捷徑。