一個數,兩件差事
到現在為止,f'(z_0) 對你已有確切的意義:差商 (f(z) - f(z_0)) / (z - z_0) 的極限,一個每條趨近路徑都得認同的單一複數。那是代數面。本篇談的是這個數背後的圖像——f'(z_0) 在 z_0 附近究竟對平面做了什麼。簡短的答案,也是值得帶走的一句,是它把每一個從 z_0 伸出的微小箭頭一次到位地旋轉並縮放,全都轉一樣多、放一樣大。
線索就藏在複數乘法的運作方式裡,那是你很久以前就見過的。把任何複數寫成極式:f'(z_0) = r e^(i theta),其中 r = |f'(z_0)| 是它的模、theta = arg f'(z_0) 是它的輻角。用 r e^(i theta) 去乘任何另一個複數,恰好對它做兩件事——把長度拉長 r 倍、把方向旋轉 theta 角。一個複數,一次拉伸,一次轉動。把這個事實放在手邊;整篇指南不過是把它套到導數身上。
現在把這點餵進複可微的局部圖像。在 z_0 附近,解析函數被 f(z) ≈ f(z_0) + f'(z_0)(z - z_0) 良好逼近。有趣的是位移 z - z_0——那個從 z_0 指向鄰近 z 的小箭頭。依極式事實,用 f'(z_0) 去乘這個箭頭,正好是把它拉長 |f'(z_0)| 倍、轉動 arg f'(z_0)。所以在一階近似下,映射把從 z_0 到 z 的箭頭,變成從 f(z_0) 到 f(z) 的一個被拉長且旋轉過的箭頭。這就是複導數在做它的幾何工作。
幅旋:放大兼扭轉
Tristan Needham 給這個合一的動作取了個一聽就忘不掉的名字:幅旋(amplitwist)。把「放大」(拉長長度)與「扭轉」(旋轉方向)熔成一個動詞,你就有了描述 f'(z_0) 所為的那一個字。它的模 |f'(z_0)| 是放大率——每個小箭頭變長多少倍;它的輻角 arg f'(z_0) 是扭轉角——每個小箭頭轉過的角度。一個複導數所承載的兩個數,恰恰就是一個拉伸倍率與一個旋轉角,捆在一起。
具體地說:取任何一個從 z_0 伸出、長度為 L、指向角度 phi 的小箭頭。用 f'(z_0) = r e^(i theta) 去乘它,會把它送成一個長度為 r 乘以 L(放大這一步)、指向角度 phi + theta(扭轉這一步)的箭頭。關鍵的細節是:對每一個起始方向 phi,都套用「相同」的 r 與「相同」的 theta。一個朝東的短箭頭與一個朝北的短箭頭,都被拉長相同的倍率 r、都被擺過相同的角度 theta——幅旋對各個方向一視同仁。
要劃線強調的是與箭頭方向無關。映射不會把朝東的箭頭拉一個倍率、把朝北的拉另一個倍率,也不會把它們轉不同的角度。z_0 處每一個無窮小箭頭,無論指向何方,都得到相同的 r 與相同的 theta。這種一致性,正是乘以一個固定複數所保證的,也是平面上一般光滑映射「沒有」的唯一特徵——一般映射可以把不同方向拉不同倍率,還能把它們剪切錯開。
一個小小的圖像演練
讓我們在最親切的例子 f(z) = z^2 上、在點 z_0 = i 處觀看這次幅旋。用冪法則 z^n 的導數是 n z^(n-1),得 f'(z) = 2z,故 f'(i) = 2i。讀出它的極式資料:|2i| = 2 而 arg(2i) = pi/2(即 90 度)。所以在 i 處的幅旋就是「長度加倍、轉四分之一圈」。每一個從 i 伸出的短箭頭,回來時都變成兩倍長,並逆時針旋轉了 90 度。
- 在 z_0 = i 處挑一個朝東的小箭頭,指向 z = i + h,其中 h 是一個小的正實數。這箭頭是 h(長度 h、角度 0)。
- 乘上 f'(i) = 2i:像箭頭是 2i * h = 2h i——長度 2h、角度 90 度。朝東的箭頭加倍了,並旋轉成朝北。
- 再挑一個朝北的箭頭,指向 z = i + i k = (1 + k) i,其中 k 是小實數。這箭頭是 i k(長度 k、角度 90 度)。
- 乘上 2i:像是 2i * (i k) = -2k——長度 2k、角度 180 度。同樣加倍、同樣多轉 90 度。朝東與朝北兩箭頭之間的直角,被保持為直角。
最後那一行,就是整個重點的縮影。兩個輸入箭頭起初相隔 90 度;兩者都轉了同樣的 90 度;於是它們最後仍相隔 90 度。映射拉伸了局部圖像(一切加倍)、又旋轉了它(一切轉四分之一圈),卻從未壓扁兩箭頭之間的夾角。拉伸兼旋轉是一種相似變換——它改變大小與定向,卻讓形狀保持忠實——這正是為何無窮小正方形映成無窮小正方形,而非平行四邊形。
夾角為何存活:保角性
這個微縮例子可推廣成本學科最招牌的性質之一。因為幅旋把 z_0 處每個箭頭都轉同一個角度 arg f'(z_0),任何兩個箭頭「之間」的夾角便絲毫未動——夾角的兩臂一同旋轉,開口維持不變,而且兩臂以相同倍率拉長,故毫無扭曲。像這樣保持曲線間夾角的映射稱為保角(共形)映射,而我們剛論證的,正是「解析函數保角」的乾淨理由:夾角的保持是旋轉-縮放結構免費贈送的禮物。
這裡有一條誠實的細則,而且很要緊。保角性只在 f'(z_0)「不」為零之處成立。若 f'(z_0) = 0,就沒有良好定義的扭轉角(0 的極式沒有輻角),也沒有讓箭頭存活的拉伸倍率——短箭頭塌縮得比一階更快,夾角一般「不」被保持。這種點稱為臨界點。在臨界點上,映射通常是把角度加倍而非保持:對 f(z) = z^2,導數 f'(0) = 0,而在 0 附近平方映射確實把角度加倍(原點處開口 alpha 的楔形展開成 2 alpha),這正是教科書裡保角性失效的標準方式。
柯西-黎曼方程說的本是同一回事
幅旋不是硬加在你兩篇前見過的柯西-黎曼方程之上的新事實——它就是同一個事實的幾何面貌。回想平面上實可微的映射,在局部是一個由 2×2 雅可比矩陣 [u_x, u_y; v_x, v_y] 給出的線性映射,這個含四個自由元素的矩陣可以任意組合地拉伸、旋轉、剪切與反射。柯西-黎曼方程 u_x = v_y 與 u_y = -v_x 把這矩陣逼進那個特殊而狹窄的形狀 [a, -b; b, a]。
Cauchy-Riemann: u_x = v_y, u_y = -v_x
Jacobian = [ u_x u_y ] = [ a -b ] with a = u_x, b = v_x
[ v_x v_y ] [ b a ]
[ a -b ] is EXACTLY 'multiply by a + i b' = r e^(i theta),
[ b a ] a rotation by theta and a scaling by r = sqrt(a^2 + b^2).
and then f'(z) = a + i b = u_x + i v_x.那個矩陣 [a, -b; b, a] 不是隨便一個矩陣——它正是充當「乘以複數 a + i b」的那個矩陣。這種矩陣永遠是一個旋轉-縮放:先旋轉 theta = arg(a + i b),再均勻縮放 r = |a + i b| 倍,絕非剪切、也絕非扭曲夾角的拉伸。所以柯西-黎曼方程、f 為解析函數的要求、以及幅旋圖像,是同一個想法的三個名字:複可微逼使局部線性部分成為一個相似變換,一次純粹的拉伸兼旋轉。代數面(柯西-黎曼)、線性代數面(那個特殊矩陣)、幾何面(幅旋),講的全是同一句話。
把實部虛部讀成流線
旋轉-縮放的觀點還悄悄敲定了一個本階梯一再繞回的事實:解析函數的實部與虛部互為調和共軛。因為局部映射是一個保持直角的相似變換,u 的等位曲線(u 為常數之處)與 v 的等位曲線(v 為常數之處),在所有 f' 非零之處都必定彼此成直角相交——這就是你會在下一篇釘住的共軛對正交性。畫出這兩族曲線,恰恰就是流體力學與靜電學所繪的等位線與流線。
留意我們從「拒絕共軛」中得到了多少。解析函數可以使用 z,卻絕不使用 z-bar——這就是「解析即與 z-bar 無關」的口號。在幾何上,z-bar 是反射 z = x + i y -> x - i y,它翻轉定向;幅旋可以旋轉與拉伸,卻「不」能翻轉。這正是共軛沒有複導數的深層理由:反射永遠寫不成旋轉-縮放,故它永遠當不了解析映射的局部作用。本階梯的每一個性質,都追溯回這唯一一次幾何上的拒絕。