傅立葉係數計算工具

透過數值積分求任意函數傅立葉係數(a₀、aₙ、bₙ)的免費工具。輸入 f(x) 的表達式、週期區間與所需次數,即可得到係數表格,並把重構的傅立葉級數展開與原函數疊加顯示在圖上。

傅立葉係數計算工具是什麼

這是一個用數值積分求任意函數傅立葉係數的工具。輸入 f(x) 的表達式、作為一個週期的區間以及所需的最高次數,即可得到常數項 a₀ 以及各次的 aₙ、bₙ 表格,並把由這些係數重構的傅立葉級數展開與原函數疊加繪製在圖上。方波、三角波等已有閉式係數的典型波形由傅立葉級數展開視覺化工具負責,本頁面則定位於親手嘗試教科書上沒有列出的表達式。

積分採用辛普森法,預設把一個週期分成 2000 份,因此顯示的係數是近似值而非精確解。對於平滑函數通常可以吻合到六位有效數字左右,但像絕對值那樣含折點的函數,或在區間端點處數值跳變的函數,增加分割數會更準確。分割數可在 10 到 20000 之間指定,建議一直調高到數字不再變動為止。

傅立葉係數計算工具的使用方法

  1. 輸入函數 填寫 f(x) 的表達式。變數寫作 x,圓周率寫作 pi。常用範例可以透過按鈕直接填入。
  2. 確定週期區間 填寫左端與右端。這裡也可以寫表達式,因此 -pi 和 2*pi 都能使用。區間寬度就是週期 T。
  3. 選擇次數 用滑桿指定要求到第幾次的係數,可在 1 到 50 之間選擇。
  4. 閱讀結果 頁面會顯示係數表格,以及把級數疊加在原函數上的圖。殘差一欄越小,說明到該次數為止對原函數的還原越好。

用好本工具的小技巧

  • 對於在區間端點跳變的函數(例如 f(x) = x),級數會在跳變附近過衝。增加次數也無法消除,因此除了殘差數值,也請一併觀察圖形的形狀。
  • 本應為 0 的係數在數值積分下會出現 1e-16 量級的數值。表中把絕對值小於 1e-10 的顯示為 0,若本應為空的欄位裡出現更大的值,請嘗試提高分割數。
  • 若為偶函數(f(−x) = f(x)),所有 bₙ 都會消失;若為奇函數,則 a₀ 與所有 aₙ 都會消失。這可以直接用來核對對稱性。
  • 若想確認方波、三角波、鋸齒波、半波整流的係數,使用閉式表達式的傅立葉級數展開視覺化工具能給出精確值。

傅立葉係數計算工具的應用場景

核對習題答案

可以按次數逐項核對手算得到的 a₀、aₙ、bₙ 是否正確。漏掉的符號、把 1/n² 寫成 1/n 之類的錯誤在這裡會立刻暴露。

嘗試教科書上沒有的函數

像 exp(-x^2) 或 x*sin(x) 這類手算積分很麻煩的函數,在這裡可以立刻得到係數。

驗證對稱性帶來的效果

在偶函數、奇函數、半波對稱的函數之間來回替換,觀察哪些係數會歸零。對稱性的結論就從背誦變成了親眼確認。

觀察改變週期後的影響

同一個表達式,區間寬度不同則角頻率也不同。把 −1〜1 與 −pi〜pi 兩種情形對比,可以清楚看到係數如何變化。

傅立葉係數計算中的相關術語

傅立葉係數
a₀、aₙ、bₙ 的統稱。每一個都等於把原函數乘上餘弦或正弦後在一個週期上積分,再除以半個週期所得的值。
週期 T
所輸入區間的寬度。傅立葉級數把函數視為以這個寬度重複,因此區間的取法會左右結果。
角頻率
指 ω = 2π/T。第 n 次諧波的角頻率為 nω,在級數中以 cos(nωx) 與 sin(nωx) 的形式出現。
辛普森法
把區間分成偶數份,每三個點用拋物線近似再積分的數值積分方法。其誤差與步長的四次方成正比,因此分割數加倍後誤差約縮小為十六分之一。
振幅與相位
把 aₙcos 與 bₙsin 合成為單個餘弦 A·cos(nωx + φ) 時的大小與橫向偏移。這裡 A = √(aₙ² + bₙ²),φ = atan2(−bₙ, aₙ)。
殘差
原函數與重構級數之差。本頁顯示的是積分節點處的均方根,用於衡量所取次數對函數的還原程度。

關於傅立葉係數計算的常見問題

要對任意表達式做符號積分需要電腦代數系統,而在瀏覽器內安全地完成這件事並不容易。因此本工具改用辛普森法的數值積分。對平滑函數而言,預設的 2000 分割通常能吻合到六位有效數字左右。若需要典型波形的精確閉式係數,請使用傅立葉級數展開視覺化工具。

這是數值積分的捨入誤差。表中把絕對值小於 1e-10 的顯示為 0。如果本應為空的地方出現了更大的值,通常說明函數含有折點或跳變,請提高分割數並確認數值是否穩定下來。

四則運算、取餘、冪、階乘;sin、cos、tan、asin、acos、atan;log(常用對數)、ln(自然對數)、sqrt、abs、exp;以及常數 pi 與 e。三角函數的引數按弧度處理。像 2x 或 3sin(x) 這樣省略乘號的寫法會自動補全。

要麼次數不夠,要麼函數在區間端點處無法週期性銜接。傅立葉級數把區間之外視為該區間的重複,因此當 f(左端) 與 f(右端) 不相等時那裡就會產生跳變,級數在附近必然過衝。改變區間的位置往往能改善這一點。
工具君

閒話 ― 從酒桶容積到 FFT,數值積分的漫長之路

本工具所用的辛普森法,得名於 1743 年介紹該公式的英國數學家托馬斯·辛普森。然而同樣的想法在一百多年前就已被約翰內斯·克卜勒使用,而且用途不是天體力學,而是估算葡萄酒桶的容積。德語地區至今仍有人稱之為「克卜勒的酒桶公式」。用一連串拋物線去近似曲線所圍的面積,原來是一件相當古老的實用算術。

用數值方法求傅立葉係數,會直接引向離散傅立葉變換。若有 N 個資料點,樸素演算法需要 N² 次乘法,而把它降到 N log N 的正是 1965 年庫利與圖基提出的快速傅立葉變換(FFT)。他們的論文發表後不久,有人發現高斯在 1805 年前後就寫下了本質相同的演算法。高斯並未發表,直到身後的全集出版時才收錄其中,因而沉睡了一個半世紀之久。

估計數值積分的誤差,在實務上直接關係到「在哪裡停下來」的判斷。辛普森法的誤差與步長的四次方成正比,因此分割數加倍後誤差約縮小為十六分之一。不過這一估計的前提是被積函數足夠平滑,一旦存在不可微的點,估計就會失效。在本工具中輸入 abs(x) 並改變分割數,就能看到精度提升不像平滑函數那樣順暢。觀察數字的變化,也是一種體會定理前提是否真正被滿足的練習。