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

用正弦與餘弦搭建函數

隨便拿一個週期訊號——方波、被撥動的弦、心電圖的軌跡——它暗地裡都是一堆純正弦與餘弦之和。本篇講清楚怎樣精確求出每一種各佔多少,以及這個配方為什麼管用。

一個大膽的斷言,以及它為何該讓你不安

整條階梯都立在這個斷言上:取一個以 2L 為週期重複的函數——在 +1 與 -1 之間猛地跳變的方波、小提琴弦那鋸齒狀的波形,任何週期性的東西,不管它多麼帶稜帶角、多麼難看——它都等於無窮多個樸素的正弦與餘弦之和。不是近似地等於,而是在函數表現良好的地方真正相等。光滑、圓潤的正弦竟然能加出一道陡直的跳躍,你頭一回聽到時本就該覺得這不可能,而你這份不安是健康的:它恰恰是我們稍後必須誠實交代的那個微妙之處。

這個想法——三角傅立葉級數——之所以重塑了物理學與工程學,恰恰是因為我們關心的太多系統都是線性的,並且對單一純音的響應非常簡單。單擺、電路、被加熱的桿、振動的膜:給它們各自餵入一個單一正弦,它就以一個同頻率的乾淨正弦作答。於是如果你能把一個複雜的輸入打碎成它的正弦碎片,你就能分別求解每一片、再把答案加起來——這正是你在解線性微分方程時見過的疊加原理。傅立葉級數就是那個負責打碎的工具。

諧波的目錄

首先,究竟哪些正弦和餘弦有資格進入這個和式?只有那些自身以同一週期 2L 重複的,否則總和就不會是週期的。在從 -L 到 L 的區間上,它們就是 cos(n pi x / L) 與 sin(n pi x / L),其中 n = 1, 2, 3, ……,再加上對應 n = 0 的常數項。n = 1 的波在一個週期裡正好裝下一整個起伏;這個最慢的波規定了基頻。n = 2 的波裝下兩個,n = 3 裝下三個,以此類推——這些更快的波就是諧波。所以這個級數是一份帶權重的目錄,每個諧波配一個旋鈕。

把這份目錄寫全,一個以 2L 為週期的函數 f 的三角傅立葉級數就是 f(x) = a_0/2 + 從 n = 1 到無窮的 [ a_n cos(n pi x / L) + b_n sin(n pi x / L) ] 之和。常數項 a_0/2 是 f 在一個週期上的平均水平——一切振盪都圍繞它進行的那個基準。每個 a_n 說明摻進了多少第 n 個餘弦,每個 b_n 說明摻進了多少第 n 個正弦。整個「求傅立葉級數」的問題歸結為一件事:釘住那些數 a_0, a_1, b_1, a_2, b_2, ……——也就是每個諧波各佔多少。這串數量就是這個函數的離散頻譜,它在頻率上的指紋。

正交性:讓我們一次只讀一個旋鈕的訣竅

那個和式裡似乎糾纏著無窮多個未知數——我們怎麼可能在不先知道其餘所有未知數的情況下,單單解出 b_7 呢?逃生口是一個叫正交性的優美事實。從我們的目錄裡任取兩個不同的波,把它們相乘,再在一整個週期上積分:答案恰好是零。例如 從 -L 到 L 的 cos(2 pi x / L) sin(3 pi x / L) dx 之積分 = 0,cos(2 pi x / L) cos(5 pi x / L) 的積分也是零。只有當你把一個波乘以它自己時,積分才得出非零值(它等於 L)。在積分的意義下,這些餘弦和正弦彼此「垂直」。

現在看陷阱怎樣彈開。假設 f 確實就是那個無窮和,而我們想要 b_7。把兩邊都乘以 sin(7 pi x / L),再在一個週期上積分。在右邊逐項來看,每個乘積都是某個目錄波乘以 sin(7 pi x / L)——而由正交性,這些積分裡的每一個都坍縮為零,唯獨那一項例外:匹配的 b_7 sin(7 pi x / L) 遇上了它自己的孿生兄弟。這個孤獨的倖存者積分出 b_7 乘以 L。無窮的交通堵塞瞬間疏通,只留下一個含一個未知數的方程。正交性就是那把把每個係數單獨剝離出來的手術刀。

歐拉公式:三個積分構成的配方

把那個剝離動作對餘弦做一遍、對正弦再做一遍,你就推出了整套配方——係數的歐拉公式(也叫歐拉-傅立葉公式)。它們只是三個定積分,每一個都是 f 在正交族某一根軸上的投影。注意它們只索取 f 本身:你把給定函數與一個已知的波相乘後積分,便掉出一個數。無需求解,無需猜測——每個係數都被直接算出來,落在一個誠實的定積分裡。

Period 2L.  Trig Fourier series:

  f(x) = a_0/2 + sum_{n>=1} [ a_n cos(n pi x / L) + b_n sin(n pi x / L) ]

EULER (Euler-Fourier) FORMULAS -- each coefficient is one integral:

  a_n = (1/L) * integral_{-L}^{L} f(x) cos(n pi x / L) dx     (n = 0, 1, 2, ...)
  b_n = (1/L) * integral_{-L}^{L} f(x) sin(n pi x / L) dx     (n = 1, 2, 3, ...)

  -> a_0 = (1/L) * integral_{-L}^{L} f(x) dx   = 2 * (average of f)
     which is why the constant term is written a_0/2.

WHY the 1/L:  integral_{-L}^{L} cos^2(n pi x / L) dx = L  (a wave dotted with itself),
              every other cross term integrates to 0  (orthogonality).
一框之內的歐拉公式:每個係數都是 f 在某個諧波上的投影。那個 1/L 只是抵消一個波與自身重疊量 L 的歸一化因子;常數項帶一個 1/2,是為了讓同一個 a_n 公式連 n = 0 也一併覆蓋。

如果你先檢查 f 的對稱性,海量的勞作就會蒸發掉,這個想法值得擁有自己的術語:偶函數與奇函數。如果 f 是偶的(關於豎軸成鏡像,像 cos),那麼每個 b_n 的被積函數都是奇的,在對稱區間上積分為零——所以偶函數純由餘弦搭成。如果 f 是奇的(像 sin,滿足 f(-x) = -f(x)),那麼每個 a_n 都消失,只有正弦倖存。在你算出任何一個積分之前,認出這一點就把工作量砍掉一半,而它正是你日後用來讓傅立葉級數適配一個非週期問題的半幅展開的種子。

一幅做出來的圖景:拼出方波

我們來真正搭點東西。取一個週期為 2L 的方波,它在左半邊(-L 到 0)等於 -1,在右半邊(0 到 L)等於 +1。它是奇的,所以我們還沒動手,每個餘弦係數 a_n 就已經是零了——只有正弦會出現。代入正弦的歐拉公式、做那個初等積分,倖存下來的係數是:當 n 為奇數時 b_n = 4/(n pi),當 n 為偶數時恰好為零。於是這個方波就是 (4/pi) [ sin(pi x / L) + (1/3) sin(3 pi x / L) + (1/5) sin(5 pi x / L) + …… ]——只有奇次諧波,且一個比一個弱。

想像部分和一層層疊起來。單單第一個正弦是一個胖乎乎的圓鼓包——一團粗糙的東西,卻已經有了正確的上下節奏。加上第三諧波,鼓包的肩部就方了一點。再加第五、第七,平頂變平、側壁變陡、稜角變利。每個新諧波都是一把精細的鑿子,修正在它之前那些項留下的殘差。繼續下去,那個圓鼓包就穩穩地朝著乾脆的矩形波邁進。這幅圖裡就裝著整套哲學:複雜由簡單的音調拼成,每個音調修正更粗糙的那些弄錯的地方。

你現在握著什麼,以及它接下來通向何處

  1. 確定週期 2L,並且不妨看一眼對稱性:偶的 f -> 只有餘弦,奇的 f -> 只有正弦。這能在你動手之前就消滅一半的積分。
  2. 用歐拉公式算係數:a_n = (1/L) 乘以 f cos(n pi x / L) 在一個週期上的積分,b_n = (1/L) 乘以 f sin(n pi x / L) 的積分。每個都是與一個已知波相乘後的一個定積分。
  3. 拼出級數 f(x) = a_0/2 + sum [ a_n cos + b_n sin ],並把這串係數讀作訊號的頻譜——每個諧波上坐著多少能量。

這就是整條階梯的引擎。一旦你能把一個週期輸入分解成諧波,你就能一次一個諧波地求解線性物理、再疊加起來——這正是桿中的熱方程與弦上的波方程在本卷後面被撬開的方式。這同一個投影思想,從正弦餘弦中解放出來,就成了複指數級數(用一個俐落的公式代替兩個),接著是面向永不重複訊號的傅立葉變換,最後是那一整族把微積分問題化為代數的積分變換。你剛剛學會的,是把一個函數當作一個和弦來聽——並叫得出其中的每一個音。