banner
IWSR

IWSR

美少女爱好者,我永远喜欢芳泽瑾。另外 P5 天下第一!

从傅立叶级数到傅立叶变换

Games101 的第 6 讲内有涉及到傅立叶变换的内容,课后花了点功夫才搞明白这东西(虽然大学学过但也忘得差不多了),于是写下这篇文章用以记录学习心得。

参考资料中我强烈推荐 DR_CAN 老师的《纯干货数学推导》系列!本文大多都是他课程内的笔记。

本文将从以下几个方面按序推导

  • 三角函数正交性
  • 对周期为 2 π\pi 的函数进行傅立叶级数展开
  • 对周期为 T 的函数进行傅立叶级数展开
  • 傅立叶级数的复数形式
  • 对非周期函数进行傅立叶级数展开

需要注意的是,由于我的学识不足因此并不能给出关于傅立叶级数展开公式的证明,就像我不会证明为什么 G=mg 一样,对于真理也许直接拿来用会更简单。但如果觉得不搞明白不舒服的读者来说我更推荐王继良老师写的文章,这篇文章有详细介绍关于傅立叶如何从热传导方程中提炼出傅立叶级数的过程。

傅立叶级数展开 : f(x)=a02+Σn=1+(ancosnx+bnsinnx)f(x) = \frac{a_0}{2} + \varSigma_{n=1}^{+\infty}(a_{n}\cos nx + b_{n}\sin nx)

三角函数的正交性#

如果存在函数 f (x) 与 g (x),且两者满足 abf(x)g(x)dx=0\int_{a}^{b} f(x)g(x) dx = 0 那么我们称函数 f (x) 与 g (x) 在区间 [a, b] 正交。

对于三角函数 0(sin0),1(cos0),sinx,cosx,sin2x,cos2x.....sinnx,cosnx0(\sin 0), 1(\cos 0), \sin x, \cos x, \sin 2x, \cos 2x..... \sin nx, \cos nx 在区间 [- π\pi, π\pi ] 上正交。

{ππcos(nx)sin(mx)dx=0,ππcos(nx)cos(mx)dx=0,nmππsin(nx)sin(mx)dx=0nm\begin{cases} \int_{-\pi}^{\pi} \cos (nx) \sin (mx) dx = 0, \\ \int_{-\pi}^{\pi} \cos (nx) \cos (mx) dx = 0, & n \neq m \\ \int_{-\pi}^{\pi} \sin (nx) \sin (mx) dx = 0 & n \neq m \end{cases}

以上积分可根据三角函数的积化和差方式求证,此处只给出其中一个计算过程作为参考

ππcos(nx)sin(mx)dx=12ππsin(n+m)xdx12ππsin(nm)xdx=12[1n+mcos(n+m)xππ+1nmcos(nm)xππ]=0\int_{-\pi}^{\pi} \cos (nx) \sin (mx) dx = \frac{1}{2} \int_{-\pi}^{\pi} \sin(n+m)x dx - \frac{1}{2} \int_{-\pi}^{\pi} \sin(n-m)x dx \\ = \frac{1}{2} [-\frac{1}{n+m} \cos (n+m)x |_{-\pi}^{\pi} + \frac{1}{n-m} \cos (n-m)x |_{-\pi}^{\pi}] \\ = 0

那假如 n = m 会怎么样?对于 sin cos 这样的组合来说没什么影响,但对于 cos cos 或者 sin sin 来说就相当于两个一样的三角函数相乘取积分了,以下给出关于 cosmx\cos mxcosmx\cos mx 组合的求解

ππcos(mx)cos(mx)dx=ππ1+cos(2m)x2dx=12(x+12msin2mx)ππ=π\int_{-\pi}^{\pi} \cos (mx) \cos (mx) dx = \int_{-\pi}^{\pi} \frac{1 + \cos (2m)x}{2} dx \\ = \frac{1}{2} (x + \frac{1}{2m} \sin{2mx})|_{-\pi}^{\pi} = \pi

记住这里推导的结果,下一节的内容将会用到这些。

对周期为 2 π\pi 的函数进行傅立叶级数展开#

在开始时已经直接给出了傅立叶级数的相关公式,接下来开始介绍如何结合三角函数的正交性来求出公式内的系数。

a0a_{0}#

对傅立叶级数展开公式两边求 π-\piπ\pi 的积分

ππf(x)dx=ππ(a02+Σn=1+(ancosnx+bnsinnx))dx=ππa02dx+anππΣn=1+1cosnxdx+bnππΣn=1+1sinnxdx\int_{-\pi}^{\pi} f(x) dx \\ = \int_{-\pi}^{\pi} (\frac{a_0}{2} + \varSigma_{n=1}^{+\infty}(a_{n}\cos nx + b_{n}\sin nx)) dx \\ = \int_{-\pi}^{\pi} \frac{a_0}{2} dx + a_{n} \int_{-\pi}^{\pi} \varSigma_{n=1}^{+\infty} 1 \cos nx dx + b_{n} \int_{-\pi}^{\pi} \varSigma_{n=1}^{+\infty} 1 \sin nx dx

在对两边积分后,很明显的能注意到 1、 cosnx\cos nx 与 1、 sinnx\sin nx 这两个组合,根据三角函数的正交性不难得出这两对组合的积分结果必然为 0。因此可以直接消去得到以下等式

ππf(x)dx=ππa02dx=a02ππ1dx=a02xππ=a0π\int_{-\pi}^{\pi} f(x) dx = \int_{-\pi}^{\pi} \frac{a_0}{2} dx \\ = \frac{a_0}{2} \int_{-\pi}^{\pi} 1 dx \\ = \frac{a_0}{2} x|_{-\pi}^{\pi} \\ = a_{0} \pi

于是可得 a0a_{0}

a0=12ππf(x)dxa_{0} = \frac{1}{2}\int_{-\pi}^{\pi} f(x) dx

ana_{n}#

对傅立叶级数展开两边都乘上 cosmx\cos mx 并求积分

ππf(x)cosmxdx=ππ(a02cosmx+Σn=1+(ancosnxcosmx+bnsinnxcosmx))dx=a02ππ1cosmxdx+anππΣn=1+cosnxcosmxdx+bnππΣn=1+sinnxcosmxdx\int_{-\pi}^{\pi} f(x) \cos mx dx \\ = \int_{-\pi}^{\pi} (\frac{a_0}{2} \cos mx + \varSigma_{n=1}^{+\infty}(a_{n}\cos nx \cos mx + b_{n}\sin nx \cos mx)) dx \\ = \frac{a_0}{2} \int_{-\pi}^{\pi} 1 \cos mx dx + a_{n} \int_{-\pi}^{\pi} \varSigma_{n=1}^{+\infty} \cos nx \cos mx dx + b_{n} \int_{-\pi}^{\pi} \varSigma_{n=1}^{+\infty} \sin nx \cos mx dx

此时我们根据三角函数正交性可以直接删去 a02ππ1cosmxdx\frac{a_0}{2} \int_{-\pi}^{\pi} 1 \cos mx dxbnππΣn=1+sinnxcosmxdxb_{n} \int_{-\pi}^{\pi} \varSigma_{n=1}^{+\infty} \sin nx \cos mx dx,毕竟最后都是 0。但对于中间的 anππΣn=1+cosnxcosmxdxa_{n} \int_{-\pi}^{\pi} \varSigma_{n=1}^{+\infty} \cos nx \cos mx dx 却不能直接整个删除,因为在 m=nm = n 的情况下,其积分结果为 π\pi

于是我们得到

ππf(x)cosmxdx=anπ\int_{-\pi}^{\pi} f(x) \cos mx dx = a_{n} \pi

变形得

an=1πππf(x)cosmxdxa_{n} = \frac{1}{\pi} \int_{-\pi}^{\pi} f(x) \cos mx dx

bnb_{n}#

对傅立叶级数展开两边都乘上 sinmx\sin mx 并求积分

ππf(x)sinmxdx=ππ(a02sinmx+Σn=1+(ancosnxsinmx+bnsinnxsinmx))dx\int_{-\pi}^{\pi} f(x) \sin mx dx = \int_{-\pi}^{\pi} (\frac{a_0}{2} \sin mx + \varSigma_{n=1}^{+\infty}(a_{n}\cos nx \sin mx + b_{n}\sin nx \sin mx)) dx

省略求证过程,因为和上面的思路是一样的,得

bn=1πππf(x)sinmxdxb_{n} = \frac{1}{\pi} \int_{-\pi}^{\pi} f(x) \sin mx dx

对周期为 T 的函数进行傅立叶级数展开#

对周期为 T 的函数展开的办法有一点巧妙,总的来说是通过参数的变换将式子强行变成 π\pi 的形状

设 T = 2L,则有 f (t) = f (t + 2L)

设 x = πL\frac{\pi}{L} t,则有 t = Lxπ\frac{Lx}{\pi},于是有 f (t) = f ( Lxπ\frac{Lx}{\pi} )

tx
00
2L2 π\pi
4L4 π\pi

如果将 g (x) 视为 f ( Lπ\frac{L}{\pi} (x)),由上表的对应关系可得,g (x) 的图形可与 f (t) 对应上,举例来说就是 f (2L) = g (2 π\pi) 这样子。 g (x) 的周期为 2 π\pi ,不过在上一节我们便已经得到了关于周期为 2 π\pi的函数的傅立叶展开时的系数。

{a0=12ππg(x)dxan=1πππg(x)cosnxdxbn=1πππg(x)sinnxdx\begin{cases} a_{0} = \frac{1}{2}\int_{-\pi}^{\pi} g(x) dx \\ a_{n} = \frac{1}{\pi} \int_{-\pi}^{\pi} g(x) \cos nx dx \\ b_{n} = \frac{1}{\pi} \int_{-\pi}^{\pi} g(x) \sin nx dx \end{cases}

那么接下来只需要把 x = πL\frac{\pi}{L} t 带入,

{cosnx=cosnπLtsinnx=sinnπLtππ1dx=LL1dπtLg(x)=f(t)\begin{cases} \cos nx = \cos \frac{n \pi}{L}t \\ \sin nx = \sin \frac{n \pi}{L}t \\ \int_{-\pi}^{\pi} 1 dx = \int_{-L}^{L} 1 d\frac{\pi t}{L} \\ g(x) = f(t) \end{cases}

那么就得到了关于周期为 T 的傅立叶级数展开

f(t)=a02+Σn=1+(ancosnπLt+bnsinnπLt)f(t) = \frac{a_0}{2} + \varSigma_{n=1}^{+\infty}(a_{n}\cos \frac{n \pi}{L}t + b_{n}\sin \frac{n \pi}{L}t)

其中(省略计算过程,解法和上一节一致)

{a0=1LLLf(t)dtan=1LLLf(t)cosnπLtdtbn=1LLLf(t)sinnπLtdt\begin{cases} a_{0} = \frac{1}{L}\int_{-L}^{L} f(t) dt \\ a_{n} = \frac{1}{L} \int_{-L}^{L} f(t) \cos \frac{n \pi}{L} t dt \\ b_{n} = \frac{1}{L} \int_{-L}^{L} f(t) \sin \frac{n \pi}{L} t dt \end{cases}

如果将 L 换成 T,那就会变成

f(t)=a02+Σn=1+(ancos2nπTt+bnsin2nπTt)f(t) = \frac{a_0}{2} + \varSigma_{n=1}^{+\infty}(a_{n}\cos \frac{2n \pi}{T}t + b_{n}\sin \frac{2n \pi}{T}t)
{a0=2T0Tf(t)dtan=2T0Tf(t)cos2nπTtdtbn=2T0Tf(t)sin2nπTtdt\begin{cases} a_{0} = \frac{2}{T}\int_{0}^{T} f(t) dt \\ a_{n} = \frac{2}{T} \int_{0}^{T} f(t) \cos \frac{2 n \pi}{T} t dt \\ b_{n} = \frac{2}{T} \int_{0}^{T} f(t) \sin \frac{2 n \pi}{T} t dt \end{cases}

傅立叶级数的复数形式#

这一节会用到欧拉公式,对于欧拉公式的证明我后续会再写一篇文章(证明需要用到泰勒展开,尽管欧拉本人并不是用这个办法得到的)

eiθ=cosθ+isinθe^{i\theta} = \cos \theta + i \sin \theta
{eiθ=cosθ+isinθeiθ=cosθ+isinθ=cosθisinθ\begin{cases} e^{i\theta} = \cos \theta + i \sin \theta \\ e^{i-\theta} = \cos -\theta + i \sin -\theta = \cos \theta - i \sin \theta \end{cases}

由上式可得

{sinθ=eiθeiθ2i=ieiθeiθ2cosθ=eiθ+eiθ2\begin{cases} \sin \theta = \frac{e^{i \theta} - e^{-i \theta}}{2i} = -i \frac{e^{i \theta} - e^{-i \theta}}{2} \\ \cos \theta = \frac{e^{i \theta} + e^{- i \theta}}{2} \end{cases}

x=2πtTx = \frac{2 \pi t}{T} 将这个式子带入到傅立叶级数可得

f(x)=a02+Σn=1+(aneinx+einx2ibneinxeinx2)=a02+Σn=1+anibn2einx+Σn=1+an+ibn2einxf(x) = \frac{a_0}{2} + \varSigma_{n=1}^{+\infty}(a_{n} \frac{e^{i nx} + e^{- i nx}}{2} -i b_{n} \frac{e^{i nx} - e^{-i nx}}{2}) \\ = \frac{a_0}{2} + \varSigma_{n=1}^{+\infty} \frac{a_{n} - i b_{n}}{2} e^{i nx} + \varSigma_{n=1}^{+\infty} \frac{a_{n}+i b_{n}}{2} e^{-i nx}

接下来的变换会让人脑瓜子疼,但想明白了又会觉得啊原来是这么回事。

a02\frac{a_{0}}{2} 视为 Σn=00a02einx\varSigma_{n=0}^{0} \frac{a_{0}}{2} e^{i nx},毕竟当 n = 0 时, einxe^{i nx} 也会等于 1,因此能够成立。

Σn=1+einx\varSigma_{n=1}^{+\infty} e^{-i nx} 的变形也很有意思,将 n 视为 -1 到 - \infty,式子就会变成 Σn=1einx\varSigma_{n=-1}^{-\infty} e^{i nx}

于是得到

f(x)=Σn=+Cneinxf(x) = \varSigma_{n = -\infty}^{+\infty} C_{n} e^{i nx}

替换 x

f(t)=Σn=+Cnei2nπTtf(t) = \varSigma_{n = -\infty}^{+\infty} C_{n} e^{i \frac{2 n \pi}{T} t}

其中

Cn={a02,n=0anibn2n=1,2,3...an+ibn2n=1,2,3...Cn = \begin{cases} \frac{a_{0}}{2}, & n = 0 \\ \frac{a_{n} - i b_{n}}{2} & n = 1,2,3... \\ \frac{a_{-n}+i b_{-n}}{2} & n = -1, -2, -3... \end{cases}

由于我们在上一节已经求出了关于周期 T 函数的傅立叶级数展开

{a0=2T0Tf(t)dtan=2T0Tf(t)cos2nπTtdtbn=2T0Tf(t)sin2nπTtdt\begin{cases} a_{0} = \frac{2}{T}\int_{0}^{T} f(t) dt \\ a_{n} = \frac{2}{T} \int_{0}^{T} f(t) \cos \frac{2 n \pi}{T} t dt \\ b_{n} = \frac{2}{T} \int_{0}^{T} f(t) \sin \frac{2 n \pi}{T} t dt \end{cases}

带入之后可得

Cn={1T0Tf(t)dt,n=01T0Tf(t)(cos2nπTtisin2nπTt)dtn>01T0Tf(t)(cos2nπTtisin2nπTt)dtn<0Cn = \begin{cases} \frac{1}{T}\int_{0}^{T} f(t) dt, & n = 0 \\ \frac{1}{T} \int_{0}^{T} f(t) (\cos \frac{2n\pi}{T} t - i \sin \frac{2n\pi}{T} t) dt & n > 0 \\ \frac{1}{T} \int_{0}^{T} f(t) (\cos \frac{2n\pi}{T} t - i \sin \frac{2n\pi}{T} t) dt & n < 0 \end{cases}

不过表达上有些丑,用欧拉公式化简

cos2nπTisin2nπT=cos2nπT+isin2nπT=ei2nπT\cos \frac{2n\pi}{T} - i \sin \frac{2n\pi}{T} = \cos -\frac{2n\pi}{T} + i \sin -\frac{2n\pi}{T} = e^{-i \frac{2n\pi}{T}}
Cn={1T0Tf(t)dt,n=01T0Tf(t)ei2nπTtdtn>01T0Tf(t)ei2nπTtdtn<0Cn = \begin{cases} \frac{1}{T}\int_{0}^{T} f(t) dt, & n = 0 \\ \frac{1}{T} \int_{0}^{T} f(t) e^{-i \frac{2n\pi}{T} t} dt & n > 0 \\ \frac{1}{T} \int_{0}^{T} f(t) e^{-i \frac{2n\pi}{T} t} dt & n < 0 \end{cases}

注意看,带入后 n > 0 与 n <0 的结果相同,再看 n = 0,其实可以发现其表达与 n> 0 与 n < 0 也相同(带入 n=0 后 ei2nπTe^{-i \frac{ 2n \pi }{T}} 结果为 1)

于是 CnC_{n} 的表达式可被统一为

Cn=1T0Tf(t)ei2nπTtdtC_{n} = \frac{1}{T} \int_{0}^{T} f(t) e^{-i \frac{ 2n \pi }{T} t} dt

此时我们设 ω0\omega_{0}2πT\frac{ 2 \pi }{T} (工程上的角速度),得到

Cn=1T0Tf(t)einω0tdtC_{n} = \frac{1}{T} \int_{0}^{T} f(t) e^{-i n \omega_{0} t} dt

于是我们得到了傅立叶级数的复数形式

{f(t)=Σn=+Cneinω0tCn=1T0Tf(t)einω0tdt\begin{cases} f(t) = \varSigma_{n = -\infty}^{+\infty} C_{n} e^{i n \omega_{0} t} \\ C_{n} = \frac{1}{T} \int_{0}^{T} f(t) e^{-i n \omega_{0} t} dt \end{cases}

接下来做个小变换。

替换积分的上下限为 [-T/2, T/2] ,然后代入原式可得(周期函数的定积分上下限只要差值为一个周期那么得到的结果都一样)

{f(t)=Σn=+Cneinω0tCn=1TT2T2f(t)einω0tdt\begin{cases} f(t) = \varSigma_{n = -\infty}^{+\infty} C_{n} e^{i n \omega_{0} t} \\ C_{n} = \frac{1}{T} \int_{-\frac{T}{2}}^{\frac{T}{2}} f(t) e^{-i n \omega_{0} t} dt \end{cases}

对非周期函数进行傅立叶级数展开#

对非周期函数进行傅里叶级数展开的处理也很巧妙,大致的思想便是将非周期函数视为一个 周期为无穷 的周期函数,随后再用周期函数的展开公式进行变换。

1T\frac{1}{T}ff , 由于 T = \infty 所以 ff 趋向于无穷小,于是得到

f(t)=Σn=+(f(t)einω0tdt)einω0tff(t) = \varSigma_{n = -\infty}^{+\infty} (\int_{-\infty}^{\infty} f(t) e^{-i n \omega_{0} t} dt) e^{i n \omega_{0} t} f

看上去挺眼熟的不是吗(定积分的定义),由于 ff 无限趋近于 0,且 ω0=2πT=2πf\omega_{0} = \frac{ 2 \pi }{T} = 2 \pi f 根据 求和变积分 可得到。

f(t)=(f(t)ei2πftdt)ei2πftdff(t) = \int_{-\infty}^{\infty} (\int_{-\infty}^{\infty} f(t) e^{-i 2 \pi f t} dt) e^{i 2 \pi f t} df

不过我想可能大家还是更熟悉下面这个形式

f(t)=12π(f(t)eiωtdt)eiωtdωf(t) = \frac{1}{ 2 \pi } \int_{-\infty}^{\infty} (\int_{-\infty}^{\infty} f(t) e^{-i \omega t} dt) e^{i \omega t} d \omega

两种表达方式其实都一样,无非一个从频率出发,一个从角速度出发。

其中

F(ω)=f(t)eiωtdtF(\omega) = \int_{-\infty}^{\infty} f(t) e^{-i \omega t} dt

为傅里叶变换

其中

f(t)=12πF(ω)eiωtdωf(t) = \frac{1}{ 2 \pi } \int_{-\infty}^{\infty} F(\omega) e^{i \omega t} d \omega

为傅里叶逆变换

参考资料#

纯干货数学推导_傅里叶级数与傅里叶变换_Part5_从傅里叶级数推导傅里叶变换

物联网前沿实践 - 傅里叶级数

B 站首发!草履虫都能看懂的【傅里叶变换】讲解,清华大学李永乐老师教你如何理解傅里叶变换,辨清美颜和变声原理...

形象展示傅里叶变换

Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.