傅里叶级数的前世今生
傅里叶变换应用在我们生活中的方方面面,它本身值的用“传奇”两个字来评价。
相信学习通信和自动化的朋友们,都能够领会到这个变换的强大之处。
它提供了一个全新的视角去理解这个世界——从“时域”到“频域”。
不过在最开始的时候,约瑟夫傅里叶创造它并不是为了纯数学的优雅,而是为了解决一个非常实际的热传导问题——如何精确地描述热量在物体(比如一块金属)中随时间扩散和分布的规律?
现在让我们把视角转到十九世纪,来回顾一下“傅里叶级数”的前世今生。(当然从级数到变换中间还有很长的路要走,这里从级数开始讲起)
1.热传导问题的核心是解一个偏微分方程
我们以一根细杆的一维热传导为例来介绍。设 u(x,t) 表示在位置 x 处、时间 t 的温度,那么当时人们已经能够总结出基本的热传导方程如下所示:
∂t∂u=k∂x2∂2u,
u(x,0)=f(x),
求u(x,t)
其中
∂t∂u是温度对时间的一阶偏导数
∂x2∂2u是温度对空间的二阶偏导数
k是一个常数,代表热扩散率
已知初始时刻t=0的温度分布u(x,0)=f(x),求任意t时间的任意x的温度u(x,t):
这个热传导方程的难点就是不限制f(x),对于给定一个任意的f(x),都要求出u(x,t)。
像这样的偏导数求解,在傅里叶那个年代人类还从来没有遇到过,不知道怎么求解。
而傅里叶创造出傅里叶级数,就是为解这样的方程创造的一个工具。
基础补充:什么是偏导数:
考虑到有些朋友已经忘记偏导数是什么了。这里补充说明一下。如果对偏导数很熟悉的朋友可以跳过。
单变量场景-导数
首先我默认各位朋友知道什么是“导数”。导数就是瞬时变化率。以一辆汽车为例,假设任意 t 时间的速度是v(t),那么它的导数就是v′(t)速度的瞬时变化率,物理意义上就是加速度。
多变量场景-偏导数
如果速度和多个变量相关呢?
例如火箭发射中燃料不停的消耗,整个系统的质量m在不断的减少。在这个系统中,速度v(m,t)就和时间 t ,质量 m 两个参数相关了。
偏导数是多元函数对其中一个自变量的导数,而将其他自变量视为常数。
上述这个例子中就有两个偏导数:
∂t∂v 这表示:**固定质量不变**时,速度随时间的变化率(纯粹由于加速度引起的变化)
∂m∂v这表示:**固定时间不变**时,速度随质量的变化率(质量减少对速度的影响)
2.如何解这个偏微分方程
2.1 当时人们对这个方程的认知
当时的人们对于
{∂t∂u=k∂x2∂2uu(x,0)=u(x)
这个问题,十九世纪的人们已经有以下几点认知:
- 如果u(x)=B ,那么 u(x,t)=B
- 如果u(x)=Bcos(ωx) ,那么 u(x,t)=Bcos(ωx)e−Kω2t
- 如果u(x)=Csin(ωx) ,那么 u(x,t)=Csin(ωx)e−Kω2t
这三个公式是当时的人们试凑出来的,我们把结论代回方程,也可以证明这三个式子成立
公式一验证
u(x,t)=B
求对t的一阶导数 ∂t∂u:因为B是一个常数,不随时间t变化,所以最后的结果为0
求对x的二阶导数∂x2∂2u,因为B也不随空间x变化,所以左后结果为0。
可以得到∂t∂u=k∂x2∂2u成立。
令t=0,求u(x,t)=B:u(x,0)=B=u(x)
可以得到u(x,0)=u(x)成立。
公式二验证
u(x,t)=Bcos(ωx)e−Kω2t
求对t的一阶导数 ∂t∂u: ∂t∂u=Bcos(ωx)e−Kω2t(−Kω2)
求对x的二阶导数∂x2∂2u,方法为先求一阶导∂x∂u,再对∂x∂u求一次导得到二阶导 ∂x2∂2u:
这里需要用复合函数求导的法则,因为是对x求导,所以e−kω2t看做是一个常数。
链式求导法则:1.先识别最外层函数,求导。2.再乘以内层函数的导数。3.如果嵌套,继续向内
∂x∂u=−Bsin(ωx)e−kω2tω
再对x做一阶导可得二阶导 :
∂x2∂2u=−Bcos(ωx)e−Kω2tω2
可以得到∂t∂u=k∂x2∂2u成立。
u(x,t)=Bcos(ωx)e−Kω2t把初始条件t=0代入。
u(x,0)=Bcos(ωx)e−Kxω2∗0=Bcos(ωt)e0=Bcos(ωt)
所以u(x,0)=u(x)成立。
公式三验证
u(x,t)=Csin(ωx)e−Kω2t
求对t的一阶导数 ∂t∂u: ∂t∂u=Ccos(ωx)e−Kω2t(−Kω2)
求对x的二阶导数∂x2∂2u,方法为先求一阶导∂x∂u,再对∂x∂u求一次导得到二阶导 ∂x2∂2u:
∂x∂u=Ccos(ωx)e−Kω2tω
再对x做一阶导可得二阶导 :
∂x∂u=−Csin(ωx)e−Kω2tω2
可以得到∂t∂u=k∂x2∂2u成立。
同样再把初始条件t=0代入。
u(x,0)=Csin(ωx)
所以u(x,0)=u(x)成立。
3 傅里叶的假设
假设一:
u(x)=B0+∑k=1+∞Bkcos(kω0x)+∑k=1+∞Cksin(kω0x)
这里往往称B0为直流分量,ω0为基波频率,而kω0为k次谐波频率。
那么热传导方程的解是下面这个公式:
u(x,t)=B0+∑k=1+∞Bkcos(kω0x)e−Kω02t+∑k=1+∞Cksin(kω0x)e−Kω02t
[!NOTE]
这里e−Kω02t上面是大K哦,和小k不是同一个,是一个系数。
假设二:
如果任意一个函数u(x)都可以分解为B0+∑k=1+∞Bkcos(kω0)+∑k=1+∞Cksin(kω0)。那就能找到任意函数的热传导方程的解。
在这里就把问题转化为——如何把一个函数u(x)分解为B0+∑k=1+∞Bkcos(kω0x)+∑k=1+∞Cksin(kω0x)这种形式
3.1 如何计算B0
u(x)=B0+∑k=1+∞Bkcos(kω0x)+∑k=1+∞Cksin(kω0x)
[!IMPORTANT]
如何计算B0?两边同时积分:
∫0ω02πf(x)dx=∫0ω02πB0dx+∑k=1+∞∫0ω02πBkcos(kω0x)dx+∑k=1+∞∫0ω02πCksin(kω0x)dx
然后可以证明:
∑k=1+∞∫0T0Bkcos(kω0x)dx=0;
∑k=1+∞∫0T0Cksin(kω0x)dx=0;
所以最后可以的到B0
B0=T0∫0T0u(x)dx
3.1.1 如何证明∑k=1+∞∫0T0Bkcos(kω0x)dx=0
Important
因为
T0是基波周期,导致积分后的
sin(2kπ)在k为正整数的时候一直为0
∫0ω02πBkcos(kω0x)dx=Bk[kω0sin(kω0x)]0ω02π=Bk(kω0sin(kω0ω02π)−kω0sin(kω0∗0))=Bk(kω0sin(2πk)−kω0sin(0))=Bk(0−0)=0
所以最后它的级数∑k=1+∞∫0ω02πBkcos(kω0x)dx也为0。
3.1.2 如何证明∑k=1+∞∫0TCksin(kω0x)dx=0
∫0ω02πCksin(kω0x)dx=ck[−kω0cos(kω0x)]0ω02π=ck(−kω0cos(kω0ω02π)−−kω0cos(kω00))=ck(−kω0cos(2kπ)−−kω0cos(0))=ck(−kω01−−kω01)=0
3.2 如何计算Bk
Important
如何计算Bk,两边同乘以cos(aω0x)再做积分
∫0T0u(x)cos(aω0x)dx=∫0T0B0cos(ω0x)dx+∑k=1+∞∫0T0Bkcos(kω0x)cos(ω0x)dx+∑k=1+∞∫0T0Cksin(kω0x)cos(ω0x)dx
这里先假设以下这四个公式成立:
1.∫0T0cos(k1ω0x)cos(k2ω0x)dx=0,前提条件k1=k2
2.∫0T0cos(k1ω0x)sin(k2ω0x)dx=0,前提条件k1=k2
3.∫0T0cos2(kω0x)dx=2T0
4.∫0T0sin2(kω0x)dx=2T0
那么上述式子可以得出:
∫0T0u(x)cos(aω0x)dx=∫0T0B0cos(aω0x)dx+∑k=1+∞∫0T0Bkcos(kω0x)cos(aω0x)dx+∑k=1+∞∫0T0Cksin(kω0x)cos(aω0x)dx∫0T0u(x)cos(aω0x)dx=0+0+2T0Ba+0=2T0BaBa=T02∫0T0u(x)cos(aω0x)dx
也就是说Bk=T02∫0T0u(x)cos(kω0x)dx
Important
这四个函数不难证明,只是繁琐而已。需要用到高中三角函数的几个公式。
cosαcosβ=21[cos(α+β)+cos(α−β)]
cosαsinβ=21[sin(α+β)−sin(α−β)]
cos2α=21+cos2α
sin2α=21−cos2α
3.2.1 证明∫0T0cos(k1ω0x)cos(k2ω0x)dx=0,前提条件k1=k2
Important
利用
cosαcosβ=21[cos(α+β)+cos(α−β)]这个公式,以及
sin2kπ=0,cos2kπ=1的特性去求解即可。
∫0T0cos(k1ω0x)cos(k2ω0x)dx=∫0T021[cos(k1ω0x+k2ω0x)+cos(k1ω0x−k2ω0x)]dx=21[∫0T0cos(k1ω0x+k2ω0x)dx+∫0T0cos(k1ω0x−k2ω0x)dx]=21[k1ω0+k2ω0sin(k1ω0x+k2ω0x)∣0T0+k1ω0−k2ω0sin(k1ω0x−k2ω0x)∣0T0]=21[(k1ω0+k2ω0sin(k1ω0T0+k2ω0T0)−k1ω0+k2ω0sin(k1ω00+k2ω00))+(k1ω0−k2ω0sin(k1ω0T0−k2ω0T0)−k1ω0−k2ω0sin(k1ω00−k2ω00))]=21[(k1ω0+k2ω0sin2(k1+k2)π−k1ω0+k2ω0sin(0))+(k1ω0−k2ω0sin2(k1−k2)π−k1ω0−k2ω0sin(0))]=0
3.2.2 证明∫0T0cos(k1ω0x)sin(k2ω0x)dx=0,前提条件k1=k2
Important
利用
cosαsinβ=21[sin(α+β)−sin(α−β)]这个公式,以及
sin2kπ=0,cos2kπ=1的特性去求解即可。
∫0T0cos(k1ω0x)sin(k2ω0x)dx=∫0T021[sin(k1ω0x+k2ω0x)−sin(k1ω0x−k2ω0x)]dx=21[k1ω0+k2ω0−cos(k1ω0x+k2ω0x)∣0T0−k1ω0−k2ω0−cos(k1ω0x−k2ω0x)∣0T0]=21[(k1ω0+k2ω0−cos(k1ω0T0+k2ω0T0)−k1ω0x+k2ω0x−cos(k1ω00+k2ω00))−(k1ω0−k2ω0−cos(k1ω0T0−k2ω0T0)−k1ω0−k2ω0−cos(k1ω00−k2ω00))]=21[(k1ω0+k2ω0−cos2(k1+k2)π−k1ω0x+k2ω0x−cos(0))−(k1ω0−k2ω0−cos2(k1−k2)π−k1ω0−k2ω0−cos(0))]=21[(k1ω0+k2ω0−1−k1ω0x+k2ω0x−1)−(k1ω0−k2ω0−1−k1ω0−k2ω0−1)]=0
3.2.3 证明∫0T0cos2(kω0x)dx=2T0
Important
利用
cos2α=21+cos2α这个公式去代,
∫0T02cos2kω0xdx这个式子在3.2.1里面证明过了等于0。
∫0T0cos2(kω0x)dx=∫0T021+cos2kω0xdx=∫0T021dx+∫0T02cos2kω0xdx=∫0T021dx+0=2T0
3.2.4 证明∫0T0sin2(kω0x)dx=2T0
∫0T0sin2(kω0x)dx=∫0T021−cos2αdx=∫0T021dx−∫0T02cos2kω0xdx=∫0T021dx−0=2T0
3.3 如何计算Ck
Tip
∫0T0u(x)sin(aω0x)dx=∫0T0B0sin(aω0x)dx+∑k=1+∞∫0T0Bkcos(kω0x)sin(aω0x)dx+∑k=1+∞∫0T0Cksin(kω0x)sin(aω0x)dx=0+0+2T0Ca
最后可得Ck=T02∫0T0u(x)sin(kω0x)dx
3.4 总结
如果有一个f(x)=B0+∑k=1+∞Bkcos(kω0x)+∑k=1+∞Cksin(kω0x)
T0是基波周期等于ω2π
则
B0=T0∫0T0f(x)dx
Bk=T02∫0T0f(x)cos(kω0x)dx
Ck=T02∫0T0f(x)sin(kω0x)dx
以此解热传导方程可得:
f(x,t)=B0+∑k=1+∞Bkcos(kω0x)e−Kω02t+∑k=1+∞Cksin(kω0x)e−Kω02t
[!NOTE]
这里e−Kω02t上面是大K哦,和小k不是同一个,是一个系数。
4. 后续
傅里叶当年提交这篇论文之后被法国科学院拒绝了。
这个推理中有一个收敛性的问题。
这里默认了
f(x)=B0+∑k=1+∞Bkcos(kω0x)+∑k=1+∞Cksin(kω0x)
问题是为什么f(x)可以写成这样呢?
傅里叶想到了这个问题,他当年写了一小句:我认为对于常规的方波,三角波,是能够证明收敛性的。
但是他没有证明,只是说了“我觉得可以”。
从他1805年提出这篇论文,直到1832年才有另外一个人,叫做“狄利赫里”才把它基本上解决了,这部分内容放到下一节再聊。