Games101 的第 6 講內有涉及到傅立葉變換的內容,課後花了點功夫才搞明白這東西(雖然大學學過但也忘得差不多了),於是寫下這篇文章用以記錄學習心得。
參考資料中我強烈推薦 DR_CAN 老師的《純乾貨數學推導》系列!本文大多都是他課程內的筆記。
本文將從以下幾個方面按序推導
- 三角函數正交性
- 對周期為 2 π 的函數進行傅立葉級數展開
- 對周期為 T 的函數進行傅立葉級數展開
- 傅立葉級數的複數形式
- 對非周期函數進行傅立葉級數展開
需要注意的是,由於我的學識不足因此並不能給出關於傅立葉級數展開公式的證明,就像我不會證明為什麼 G=mg 一樣,對於真理也許直接拿來用會更簡單。但如果覺得不搞明白不舒服的讀者來說我更推薦王繼良老師寫的文章,這篇文章有詳細介紹關於傅立葉如何從熱傳導方程中提煉出傅立葉級數的過程。
傅立葉級數展開 : f(x)=2a0+Σn=1+∞(ancosnx+bnsinnx)
三角函數的正交性#
如果存在函數 f (x) 與 g (x),且兩者滿足 ∫abf(x)g(x)dx=0 那麼我們稱函數 f (x) 與 g (x) 在區間 [a, b] 正交。
對於三角函數 0(sin0),1(cos0),sinx,cosx,sin2x,cos2x.....sinnx,cosnx 在區間 [- π, π ] 上正交。
⎩⎨⎧∫−ππcos(nx)sin(mx)dx=0,∫−ππcos(nx)cos(mx)dx=0,∫−ππsin(nx)sin(mx)dx=0n=mn=m
以上積分可根據三角函數的積化和差方式求證,此處只給出其中一個計算過程作為參考
∫−ππcos(nx)sin(mx)dx=21∫−ππsin(n+m)xdx−21∫−ππsin(n−m)xdx=21[−n+m1cos(n+m)x∣−ππ+n−m1cos(n−m)x∣−ππ]=0
那假如 n = m 會怎麼樣?對於 sin cos 這樣的組合來說沒什麼影響,但對於 cos cos 或者 sin sin 來說就相當於兩個一樣的三角函數相乘取積分了,以下給出關於 cosmx 與 cosmx 組合的求解
∫−ππcos(mx)cos(mx)dx=∫−ππ21+cos(2m)xdx=21(x+2m1sin2mx)∣−ππ=π
記住這裡推導的結果,下一節的內容將會用到這些。
對周期為 2 π 的函數進行傅立葉級數展開#
在開始時已經直接給出了傅立葉級數的相關公式,接下來開始介紹如何結合三角函數的正交性來求出公式內的係數。
求 a0#
對傅立葉級數展開公式兩邊求 −π 到 π 的積分
∫−ππf(x)dx=∫−ππ(2a0+Σn=1+∞(ancosnx+bnsinnx))dx=∫−ππ2a0dx+an∫−ππΣn=1+∞1cosnxdx+bn∫−ππΣn=1+∞1sinnxdx
在對兩邊積分後,很明顯的能注意到 1、 cosnx 與 1、 sinnx 這兩個組合,根據三角函數的正交性不難得出這兩對組合的積分結果必然為 0。因此可以直接消去得到以下等式
∫−ππf(x)dx=∫−ππ2a0dx=2a0∫−ππ1dx=2a0x∣−ππ=a0π
於是可得 a0 為
a0=21∫−ππf(x)dx
求 an#
對傅立葉級數展開兩邊都乘上 cosmx 並求積分
∫−ππf(x)cosmxdx=∫−ππ(2a0cosmx+Σn=1+∞(ancosnxcosmx+bnsinnxcosmx))dx=2a0∫−ππ1cosmxdx+an∫−ππΣn=1+∞cosnxcosmxdx+bn∫−ππΣn=1+∞sinnxcosmxdx
此時我們根據三角函數正交性可以直接刪去 2a0∫−ππ1cosmxdx 與 bn∫−ππΣn=1+∞sinnxcosmxdx,畢竟最後都是 0。但對於中間的 an∫−ππΣn=1+∞cosnxcosmxdx 卻不能直接整個刪除,因為在 m=n 的情況下,其積分結果為 π。
於是我們得到
∫−ππf(x)cosmxdx=anπ
變形得
an=π1∫−ππf(x)cosmxdx
求 bn#
對傅立葉級數展開兩邊都乘上 sinmx 並求積分
∫−ππf(x)sinmxdx=∫−ππ(2a0sinmx+Σn=1+∞(ancosnxsinmx+bnsinnxsinmx))dx
省略求證過程,因為和上面的思路是一樣的,得
bn=π1∫−ππf(x)sinmxdx
對周期為 T 的函數進行傅立葉級數展開#
對周期為 T 的函數展開的辦法有一點巧妙,總的來說是通過參數的變換將式子強行變成 π 的形狀
設 T = 2L,則有 f (t) = f (t + 2L)
設 x = Lπ t,則有 t = πLx,於是有 f (t) = f ( πLx )
如果將 g (x) 視為 f ( πL (x)),由上表的對應關係可得,g (x) 的圖形可與 f (t) 對應上,舉例來說就是 f (2L) = g (2 π) 這樣子。 g (x) 的周期為 2 π ,不過在上一節我們便已經得到了關於周期為 2 π的函數的傅立葉展開時的係數。
⎩⎨⎧a0=21∫−ππg(x)dxan=π1∫−ππg(x)cosnxdxbn=π1∫−ππg(x)sinnxdx
那麼接下來只需要把 x = Lπ t 帶入,
⎩⎨⎧cosnx=cosLnπtsinnx=sinLnπt∫−ππ1dx=∫−LL1dLπtg(x)=f(t)
那麼就得到了關於周期為 T 的傅立葉級數展開
f(t)=2a0+Σn=1+∞(ancosLnπt+bnsinLnπt)
其中(省略計算過程,解法和上一節一致)
⎩⎨⎧a0=L1∫−LLf(t)dtan=L1∫−LLf(t)cosLnπtdtbn=L1∫−LLf(t)sinLnπtdt
如果將 L 換成 T,那就會變成
f(t)=2a0+Σn=1+∞(ancosT2nπt+bnsinT2nπt)
⎩⎨⎧a0=T2∫0Tf(t)dtan=T2∫0Tf(t)cosT2nπtdtbn=T2∫0Tf(t)sinT2nπtdt
傅立葉級數的複數形式#
這一節會用到歐拉公式,對於歐拉公式的證明我後續會再寫一篇文章(證明需要用到泰勒展開,儘管歐拉本人並不是用這個辦法得到的)
eiθ=cosθ+isinθ
{eiθ=cosθ+isinθei−θ=cos−θ+isin−θ=cosθ−isinθ
由上式可得
{sinθ=2ieiθ−e−iθ=−i2eiθ−e−iθcosθ=2eiθ+e−iθ
設 x=T2πt 將這個式子帶入到傅立葉級數可得
f(x)=2a0+Σn=1+∞(an2einx+e−inx−ibn2einx−e−inx)=2a0+Σn=1+∞2an−ibneinx+Σn=1+∞2an+ibne−inx
接下來的變換會讓人腦瓜子疼,但想明白了又會覺得啊原來是這麼回事。
將 2a0 視為 Σn=002a0einx,畢竟當 n = 0 時, einx 也會等於 1,因此能夠成立。
Σn=1+∞e−inx 的變形也很有意思,將 n 視為 -1 到 - ∞,式子就會變成 Σn=−1−∞einx
於是得到
f(x)=Σn=−∞+∞Cneinx
替換 x
f(t)=Σn=−∞+∞CneiT2nπt
其中
Cn=⎩⎨⎧2a0,2an−ibn2a−n+ib−nn=0n=1,2,3...n=−1,−2,−3...
由於我們在上一節已經求出了關於周期 T 函數的傅立葉級數展開
⎩⎨⎧a0=T2∫0Tf(t)dtan=T2∫0Tf(t)cosT2nπtdtbn=T2∫0Tf(t)sinT2nπtdt
帶入之後可得
Cn=⎩⎨⎧T1∫0Tf(t)dt,T1∫0Tf(t)(cosT2nπt−isinT2nπt)dtT1∫0Tf(t)(cosT2nπt−isinT2nπt)dtn=0n>0n<0
不過表達上有些醜,用歐拉公式化簡
cosT2nπ−isinT2nπ=cos−T2nπ+isin−T2nπ=e−iT2nπ
Cn=⎩⎨⎧T1∫0Tf(t)dt,T1∫0Tf(t)e−iT2nπtdtT1∫0Tf(t)e−iT2nπtdtn=0n>0n<0
注意看,帶入後 n > 0 與 n <0 的結果相同,再看 n = 0,其實可以發現其表達與 n> 0 與 n < 0 也相同(帶入 n=0 後 e−iT2nπ 結果為 1)
於是 Cn 的表達式可被統一為
Cn=T1∫0Tf(t)e−iT2nπtdt
此時我們設 ω0 為 T2π (工程上的角速度),得到
Cn=T1∫0Tf(t)e−inω0tdt
於是我們得到了傅立葉級數的複數形式
{f(t)=Σn=−∞+∞Cneinω0tCn=T1∫0Tf(t)e−inω0tdt
接下來做個小變換。
替換積分的上下限為 [-T/2, T/2] ,然後代入原式可得(周期函數的定積分上下限只要差值為一個周期那麼得到的結果都一樣)
{f(t)=Σn=−∞+∞Cneinω0tCn=T1∫−2T2Tf(t)e−inω0tdt
對非周期函數進行傅立葉級數展開#
對非周期函數進行傅里葉級數展開的處理也很巧妙,大致的思想便是將非周期函數視為一個 周期為無窮 的周期函數,隨後再用周期函數的展開公式進行變換。
記 T1 為 f , 由於 T = ∞ 所以 f 趨向於無窮小,於是得到
f(t)=Σn=−∞∞(∫−∞∞f(t)e−inω0tdt)einω0tf
看上去挺眼熟的不是嗎(定積分的定義),由於 f 無限趨近於 0,且 ω0=T2π=2πf 根據 求和變積分 可得到。
f(t)=∫−∞∞(∫−∞∞f(t)e−i2πftdt)ei2πftdf
不過我想可能大家還是更熟悉下面這個形式
f(t)=2π1∫−∞∞(∫−∞∞f(t)e−iωtdt)eiωtdω
兩種表達方式其實都一樣,無非一個從頻率出發,一個從角速度出發。
其中
F(ω)=∫−∞∞f(t)e−iωtdt
為傅里葉變換
其中
f(t)=2π1∫−∞∞F(ω)eiωtdω
為傅里葉逆變換
參考資料#
純乾貨數學推導_傅里葉級數與傅里葉變換_Part5_從傅里葉級數推導傅里葉變換
物聯網前沿實踐 - 傅里葉級數
B 站首發!草履蟲都能看懂的【傅里葉變換】講解,清華大學李永樂老師教你如何理解傅里葉變換,辨清美顏和變聲原理...
形象展示傅里葉變換