這是一個傅立葉變化系列的公式推導及其程式設計應用,公式上有什麼不對的,大家可以隨時在評論區給我留言,我一定積極修改,不誤人子弟。

目前系列文章有:

首先,隆重推出傅立葉級數的公式,不過這個東西屬於“文物”級別的,誕生於19世紀初,因為傅立葉他老人家生於1768年,死於1830年。

但傅立葉級數在數論、組合數學、訊號處理、機率論、統計學、密碼學、聲學、光學等領域都有著廣泛的應用,這不由得讓人肅然起敬。一開啟《訊號與系統》、《鎖相環原理》等書籍,動不動就跳出一個“傅立葉級數”或“傅立葉變換”,弄一長串公式,讓人云山霧罩。

如下就是傅立葉級數的公式:

\begin{equation} \begin{split} f(t)&=\frac{a_{0}}{2}+a_{1}cos(\omega t)+b_{1}sin(\omega t) \\ &+a_{2}cos(2\omega t)+b_{2}sin(2\omega t) \\ &+...\\ &=\frac{a_{0}}{2}+\sum_{n=1}^{\infty}{[a_{n}cos(n\omega t)+b_{n}sin(n\omega t)]} \end{split} \end{equation}\tag{1}

其中:

 \begin{align} &a_{n}=\frac{2}{T}\int_{t_{0}}^{t_{0}+T}f(t)cos(n\omega t)dt \tag{2} \\ &b_{n}=\frac{2}{T}\int_{t_{0}}^{t_{0}+T}f(t)sin(n\omega t)dt \tag{3}\\ \end{align}

不客氣地說,這個公式可以說是像“臭婆娘的裹腳布——又臭又長”,而且來歷相當蹊蹺,不知那個傅立葉什麼時候靈光乍現,把一個週期函式f(t)硬生生地寫成這麼一大堆東西。單看那個{1}式,就是把週期函式f(t)描述成一個常數係數a0、及1倍ω的sin和cos函式、2倍ω的sin和cos函式等、到n倍ω的sin和cos函式等一系列式子的和,且每項都有不同的係數,即An和Bn,至於這些係數,需要用積分來解得,即{2}{3}{4}式,不過為了積分方便,積分割槽間一般設為

[-π, π]

,也相當一個週期T的寬度。

能否從數學的角度推匯出此公式,以使傅立葉級數來得明白些,讓我等能瞭解它的前世今生呢?下面來詳細解釋一下此公式的得出過程:

1、把一個週期函式表示成三角級數:

首先,週期函式是客觀世界中週期運動的數學表述,如物體掛在彈簧上作簡諧振動、單擺振動、無線電電子振盪器的電子振盪等,大多可以表述為:

f(t)=Asin(\omega t+\psi)  \tag{4}

這裡

t

表示時間,

A

表示振幅,

\omega

為角頻率,

\psi

為初相(與考察時設定原點位置有關,可以理解為一個常量)。

然而,世界上許多週期訊號並非正弦函式那麼簡單,如方波、三角波等。傅立葉就想,能否用一系列的三角函式

A_{n}sin(n\omega t+\psi_{n})

之和來表示那個較複雜的週期函式

f(t)

呢?因為正弦函式sin可以說是最簡單的週期函式了。於是,傅立葉寫出下式:(

關於傅立葉推導純屬猜想、已經有知乎的網友指出是解熱方程和絃振動匯出的,有機會找找相關資料

f(t)=A_{0}+\sum_{n=1}^{\infty}{A_{n}sin(n\omega t+\psi_{n})}\tag{5}

這裡,t是變數,其他都是常數。與上面最簡單的正弦週期函式相比,5式中多了一個n,且n從1到無窮大。這裡f(t)是已知函式,也就是需要分解的原週期函式。從公式5來看,傅立葉是想把一個週期函式表示成許多正弦函式的線性疊加,這許許多多的正弦函式有著不同的幅度分量(即式中An)、有不同的週期或說是頻率(是原週期函式的整數倍,即n)、有不同的初相角(即

\psi_{n}

),當然還有一項常數項(即

A_{0}

)。要命的是,這個n是從1到無窮大,也就是是一個無窮級數。

這裡強調一下,傅立葉級數中對不同頻率的波有一個要求就是給定一個初始的頻率

\omega_{0}

,之後的角頻率必須是

\omega_{0}

的整數倍, 這就是DTF(離散傅立葉變化)中的角頻率取值的原則。

傅立葉系列(一)傅立葉級數的推導

應該說,傅立葉是一個天才,想得那麼複雜。一般人不太會把一個簡單的週期函式弄成這麼一個複雜的表示式。但傅立葉認為,式子右邊一大堆的函式,其實都是最簡單的正弦函式,有利於後續的分析和計算。當然,這個式能否成立,關鍵是級數中的每一項都有一個未知係數,如A0、An等,如果能把這些係數求出來,那麼5式就可以成立。當然在5式中,唯一已知的就是原週期函式f(t),那麼只需用已知函式f(t)來表達出各項係數,上式就可以成立,也能計算了。

因為

\psi_{n}

是個常數,

A_{n}

也是常數。解過常微分方程的人都知道,方程中的常數能整合到一起就整合到一起。

於是乎,傅立葉首先對式5作如下變形:

A_{n}sin(n\omega t+\psi_{n})={\color{blue}{A_{n}sin\psi_{n}}}cos(n\omega t)+\color{blue}{A_{n}cos\psi_{n}}sin(n\omega t)\\

這個變化並不陌生,源自於三角公式:

sin(\alpha\pm\beta)=sin\alpha cos\beta\pm cos\alpha sin\beta\\

式中,藍色項即為我們需要合併的常數項,

記:

a_{n}=\color{blue}{An\cdot sin\psi_{n}}

b_n=\color{blue}{A_n\cdot cos\psi_n}

這樣,公式{5}就可以寫成如下公式{6}的形式:

f(t)=A_{0}+\sum_{n=1}^{\infty}{[a_ncos(n\omega t)+b_{n}sin(n\omega t)]} \tag{6}

到了這一步我們只要解出

A_{0}

a_{n}

b_{n}

的值即可。

2、麥克勞林公式中的待定係數法:

這裡為解出

A_{0}

a_{n}

b_{n}

值奠定下思路:

泰勒級數即為任意一個函式都可以用一個多項式來逼近,記為:

f(x)=A+Bx+Cx^{2}+Dx^{3}+...\\

那麼,麥克勞林令:

\begin{align} &f^{

在每個等式中令x=0,然後使用待定係數法就可以解出A,B,C。。。的值

A=f(0)

B=f^{

C=f^{

D=f^{

即:

N=f^{n}(x)/n!\\

而眾所周知三角函式在一個週期內的積分為0,如圖

傅立葉系列(一)傅立葉級數的推導

我們只要對(6)左右進行積分後即可求出

A_{0}

的值,然後依次代入即可解出

a_{n}

b_{n}

使用

f(t)

表達的公式。

3、三角函式的正交性:

這是為下一步傅立葉級數展開時所用積分的準備知識。

一個三角函式系:1,cosx , sinx , cos2x , sin2x , … , cosnx , sinnx , … 如果這一堆函式(包括常數1)中任何兩個不同函式的乘積在區間[-π, π]上的積分等於零,就說三角函式系在區間[-π, π]上正交

,即有如下式子:

\begin{align} &\int_{-\pi}^{\pi}cos\ nxdx=0\quad\quad\quad(n=1,2,3,...)\\ &\int_{-\pi}^{\pi}sin\ nxdx=0\quad\quad\quad(n=1,2,3,...)\\ &\int_{-\pi}^{\pi}sin\ kx\cdot cos\ nxdx=0\quad\quad\quad(k,n=1,2,3,...;k\ne n)\\ &\int_{-\pi}^{\pi}cos\ kx\cdot cos\ nxdx=0\quad\quad\quad(k,n=1,2,3,...;k\ne n)\\ &\int_{-\pi}^{\pi}sin\ kx\cdot sin\ nxdx=0\quad\quad\quad(k,n=1,2,3,...;k\ne n)\\ \end{align}\\

以上各式在區間

[-π, π]

的定積分均為0,第1第2式可視為三角函式cos和sin與1相乘的積分;第3-5式則為sin和cos的不同組合相乘的積分式。除了這5個式子外,不可能再有其他的組合了。注意,第4第5兩個式中,k不能等於n,否則就不屬於“三角函式系中任意兩個不同函式”的定義了,變成同一函式的平方了。但第3式中,k與n可以相等,相等時也是二個不同函式。下面透過計算第4式的定積分來驗證其正確性,第4式中二函式相乘可以寫成:

\begin{align} &cos\ kx\cdot cos\ nx=\frac{1}{2}[cos(k+n)x+cos(k-n)x]\\ &sin\ kx\cdot sin\ nx=-\frac{1}{2}[cos(k+n)x-cos(k-n)x]\\ &sin\ kx\cdot cos\ nx=\frac{1}{2}[sin(k+n)x+sin(k-n)x]\\ \end{align}\\

k\ne n

時,有:

\begin{align} \int_{-\pi}^{\pi}cos\ kx \cdot cos\ nxdx&=\frac{1}{2}\int_{-\pi}^{\pi}[cos(k+n)x + cos(k-n)x]dx\\ &=\frac{1}{2}[\frac{sin(k+n)x}{k+n}\ +\ \frac{sin(k-n)x}{k-n}]|_{-\pi}^{\pi}\\ &=\frac{1}{2}[0+0]=0 \end{align}

可見在指定

[-π, π]

的區間裡,該式的定積分為0。其他式也可逐一驗證。

4、函式展開成傅立葉級數:

先把傅立葉級數表示為下式,即⑥式:

f(t)=A_{0}+\sum_{n=1}^{\infty}{[a_ncos(n\omega t)+b_{n}sin(n\omega t)]} \tag{6}

對⑥式從

[-π, π]

積分,得:

\begin{align} \int_{-\pi}^{\pi}f(t)&=\int_{-\pi}^{\pi}A_{0}+\int_{-\pi}^{\pi}\sum_{n=1}^{\infty}{[a_{n}cos(n\omega t)+b_{n}sin(n\omega t)]}\\ &=\int_{-\pi}^{\pi}A_{0}+0=A_{0}|^{\pi}_{-\pi}\\ &=(\pi-(-\pi))A_{0}\\ &=2\pi A_{0} \end{align}\\

解出:

A_{0}=\frac{1}{2\pi}\int_{-\pi}^{\pi}f(t)

這就求得了第一個係數

A_{0}

的表示式,即最上邊傅立葉級數公式裡的(2)式。接下來再求

a_{n}

b_{n}

的表示式。用

cos(k\omega t)

乘{6}式的二邊得:

\sum_{n=1}^{\infty}{[a_{n}cos(n\omega t)+b_{n}sin(n\omega t)}

\begin{align} f(t) \cdot cos(k\omega t)=&A_{0}cos(k \omega t)+\\&\sum_{n=1}^{\infty}{[a_{n}cos(n\omega t)\cdot cos(k\omega t)+b_{n}sin(n\omega t)\cdot cos(k\omega t)}] \end{align}\\

然後對上式從

-\pi

\pi

逐項積分:

\begin{align} \int_{-\pi}^{\pi}f(t) \cdot cos(k\omega t)dt=&A_{0}\color{red}{\int_{-\pi}^{\pi}cos(k \omega t)dt}+\\&\sum_{n=1}^{\infty}{[a_{n}\color{blue}{\int_{-\pi}^{\pi}cos(n\omega t)\cdot cos(k\omega t)dt}+b_{n}\color{red}{\int_{-\pi}^{\pi}sin(n\omega t)\cdot cos(k\omega t)dt}}] \end{align}\\

根據三角函式系的正交性,紅色積分為0,藍色項中僅當

k=n

時積分不為0,其餘項積分為0,所以有:

\begin{align} \int_{-\pi}^{\pi}cos(k\omega t) \cdot f(t)&=a_{n}\sum_{n=1}^{\infty}{\color{blue}{\int_{-\pi}^{\pi}cos(k\omega t)\cdot cos(n\omega t)dt}}\\ &=a_{n}\int_{-\pi}^{\pi}cos^{2}(n\omega t)dt\\ &=\frac{a_{n}}{2}\int^{\pi}_{-\pi}(1+cos2n\omega t)dt(半形公式)\\ &=\frac{a_{n}}{2}(\int^{\pi}_{-\pi}1dt+ \color{red}{\int^{\pi}_{-\pi}cos2n\omega t\ dt})\\ \\ &=\frac{a_{n}}{2} \cdot2\pi=a_{n}\pi\\ \end{align}\\

解得:

a_n=\frac{1}{\pi}\int_{-\pi}^{\pi}cos(n\omega t) \cdot f(t)dt \quad \quad (k=n)\\

同理用

sin(k\omega t)

乘{6}式的二邊得:

b_n=\frac{1}{\pi}\int_{-\pi}^{\pi}sin(n\omega t) \cdot f(t)dt \quad \quad (k=n)\\

我們發現

A_{0}

的分母為

2\pi

a_{n}、b_{n}

\pi

,為了統一分母我們令

a_{0}=2A_{0}

有:

a_{0}=\frac{2}{T}\int_{-\pi}^{\pi}f(t)dt\\

(6)變形為:

f(t)=\frac{a_{0}}{2}+\sum_{n=1}^{\infty}{[a_ncos(n\omega t)+b_{n}sin(n\omega t)]} \\

推導的時候假設

T=2\pi

,代入即可得到(2)、(3)、(4)

 \begin{align} &a_{n}=\frac{2}{T}\int_{t_{0}}^{t_{0}+T}f(t)cos(n\omega t)dt \tag{2} \\ &b_{n}=\frac{2}{T}\int_{t_{0}}^{t_{0}+T}f(t)sin(n\omega t)dt \tag{3}\\ \end{align}

至此,已經求得傅立葉級數中各系數的表示式,當然這裡有個條件:

\int_{t_{0}}^{t_{0}+T}f(t)dt

積分存在,這裡涉及到

勒貝格可積

的問題,因為離散傅立葉變化涉及到週期內有無限個可去間斷點的問題,狄利克雷條件僅僅是個充分條件,一個函式有傅立葉級數但是它也存在無限個間斷點以及極大值極小值比如方波訊號。

至於勒貝格可積有空另開篇文章進行證明。

綜上,傅立葉級數的產生過程可以分為以下三步:

1、設想可以把一個週期函式f(t)透過最簡單的一系列正弦函式來表示,即5式;

2、透過變形後用三角級數(含sin和cos)來表示;

3、透過積分,把各未知係數用f(t)的積分式來表達;

4、最後得到的4個表示式就是傅立葉級數公式。

傅立葉系列(一)傅立葉級數的推導

我們眼中的世界就像皮影戲的大幕布,幕布的後面有無數的齒輪,大齒輪帶動小齒輪,小齒輪再帶動更小的。在最外面的小齒輪上有一個小人——那就是我們自己。我們只看到這個小人毫無規律的在幕布前表演,卻無法預測他下一步會去哪。而幕布後面的齒輪卻永遠一直那樣不停的旋轉,永不停歇。這樣說來有些宿命論的感覺。說實話,這種對人生的描繪是我一個朋友在我們都是高中生的時候感嘆的,當時想想似懂非懂,直到有一天我學到了傅立葉級數……

沒錯一切都是 命運石之門的選擇