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 站首发!草履虫都能看懂的【傅里叶变换】讲解,清华大学李永乐老师教你如何理解傅里叶变换,辨清美颜和变声原理...
形象展示傅里叶变换