傅里叶级数与傅里叶变换的推导

  • 这篇文章对于傅里叶级数,变换的意义不做过多研究,网络上有非常多图文并茂的定性解释的资料,请自行研究

  • 本文聚焦于几个基本的命题与证明来加深对傅里叶级数与傅里叶变换的理解


1. 傅里叶级数与函数内积

  • 对于傅里叶级数,最重要的命题,也是这个级数能存在的基础就是任意三角函数sin(nx)cos(nx)sin(nx)与cos(nx)之间是正交的

首先定义函数内积

  • 都知道向量是有内积定义的,即:

对向量u,v,内积的定义为:对向量\mathbf{u}, \mathbf{v}, 内积的定义为:

<u,v>=uTv<\mathbf{u}, \mathbf{v}> = \mathbf{u}^T\mathbf{v}

  • 所以函数内积的核心在于将一个函数当作一个向量处理
  • 为什么这样做是合理的?
    • 因为我们关注的是函数之间的线性组合能否张成一个空间来表示大部分函数,eg: acosx+bsinxacosx + bsinx
    • 这一点和向量非常相似,所以我们可以把函数当作一个向量处理
  • 所以函数内积是如何定义的?
  • 以下是向量内积:

<u,v>=i=0nui×vi<\mathbf{u}, \mathbf{v}> = \sum_{i = 0}^n{u_i\times v_i}

  • 函数内积首先简单地把向量换成函数

<f(x),g(x)>=i=0nf(x)g(x)<f(x), g(x)> = \sum_{i = 0}^n{f(x)g(x)}

  • 由于函数是连续的,连续的和可以转变为积分!!!

<f(x),g(x)>=abf(x)g(x)dx<f(x), g(x)> = \int_{a}^{b}{f(x)g(x)dx}

  • 对于周期在[0,T][0, T]上的函数,内积定义可以为

<f(x),g(x)>=0Tf(x)g(x)dx<f(x), g(x)> = \int_{0}^{T}{f(x)g(x)dx}

  • that’s it, 恭喜你知道了函数内积的定义,就是这么简单
  • 注:对函数内积的广义内积操作的property证明略,请自行查看,因为这对于理解函数内积不是必要的

函数内积总结:

  • 完整的表示应该是:

L2([a,b])空间内,两个定义域在[a,b]上的函数f(x),g(x)的平方可积函数的内积被定义为:在L^2([a, b])空间内, 两个定义域在[a, b]上的函数f(x), g(x)的平方可积函数的内积被定义为:

<f(x),g(x)>=abf(x)g(x)dx<f(x), g(x)> = \int_{a}^{b}{f(x)g(x)dx}

  • 注, 对平方可积的要求是广义内积定义要求的,即对于广义的内积定义,<f(x),f(x)><f(x), f(x)>必须存在且大于等于零


2. 傅里叶级数基底正交性证明与傅里叶级数的表达

  • 等待证明的命题:

[0,T]范围内,对基底:在[0, T]范围内,对基底:

1, sin(x),sin(2x)sin(nx), cos(x),cos(2x)cos(nx) (nZ)1, \ sin(x), sin(2x) \dots sin(nx), \ cos(x), cos(2x) \dots cos(nx) \ (n ∈ Z)

证明他们是空间L2([0,T])的一组正交基证明他们是空间L^2([0, T])的一组正交基

  • 首先使用一个定理(证明略):

如果一组非零向量两两正交, 那么这一组向量一定线性独立, i.e., 构成正交基如果一组非零向量两两正交, \ 那么这一组向量一定线性独立, \ i.e., \ 构成正交基

  • 所以我们只需要证明对于以上基底,两两内积一定为零即可
  • 首先常数与其他任意基底的内积为零是显而易见的

0Tsin(nx)dx=0(1)\int_0^Tsin(nx)dx = 0\tag{1}

  • 然后证明三角函数之间的内积同样为零

证明:0Tsin(nx)cos(mx)dx=0(2)证明: \int_0^Tsin(nx)cos(mx)dx = 0\tag{2}

  • 使用和差化积公式:

sin(nx)cos(mx)=12(sin(n+m)x+sin(nm)x)(3)sin(nx)cos(mx) = \frac{1}{2}(sin(n + m)x + sin(n - m)x)\tag{3}

原式=0T12(sin(n+m)x+sin(nm)x)dx(4)原式 = \int_0^T\frac{1}{2}(sin(n + m)x + sin(n - m)x)dx\tag{4}

=12(0Tsin(n+m)xdx+0Tsin(nm)xdx)=0(5)= \frac{1}{2}(\int_0^Tsin(n + m)xdx + \int_0^Tsin(n - m)xdx) = 0\tag{5}

  • 由于1式结论,两个积分component都是零,故积分和为零
  • 其他分类讨论如法炮制,核心就是和差化积公式
  • Q.E.D

更好的表示方法

  • 但是可以发现,我们使用了T作为周期,所以在表示的时候,我们为了方便表示,会加上简谐运动的公式来改写这个基底:

ω=2πT(1)\omega = \frac{2\pi}{T}\tag{1}

乘以角速度,方便使用

sin(ωnx)=sin(2πnTx)(2)sin(\omega nx) = sin(\frac{2\pi n}{T}x)\tag{2}

  • 所以对于任意在空间L2([0,T])L^2([0, T])中的函数h(x)

h(x)=a0+n=1(ancos(2πnTx)+bnsin(2πnTx))h(x) = a_0 + \sum_{n = 1}^∞(a_ncos(\frac{2\pi n}{T}x) + b_nsin(\frac{2\pi n}{T}x))



基于傅里叶级数,不得不看到傅里叶变换了,但是在进傅里叶变换之前,先了解一下复数的三角函数表示


复数的三角函数表示

  • 已知一个复数:

c=a+bic = a + bi

  • 这个复数可以表示为二维空间中的一个向量

c=[a,b]Tc = [a, b]^T

  • 如果标准化后这个向量会在一个单位圆上运动
  • 这也是复数的三角函数表示的来源

c=cos(x)+isin(x)c = cos(x) + isin(x)


欧拉公式

  • 可以说整个傅里叶变换能行的基础就是欧拉公式
  • 首先,欧拉公式的定义:

eix=cos(x)+isin(x)e^{ix} = cos(x) + isin(x)

  • 推导:
    1. 首先把ete^t在 t = 0 处的 泰勒展开 写出来:

et=k=0ntkk!e^t = \sum_{k = 0}^n{\frac{t^k}{k!}}

  • t=ixt = ix:

eix=k=0(ix)kk!e^{ix} = \sum_{k = 0}^∞{\frac{(ix)^k}{k!}}

  • 又因为(i)k(i)^k这个公式是有 周期(T = 4) 的,周期如下:

i0=1(1)i^0 = 1\tag{1}

i1=i(2)i^1 = i\tag{2}

i2=1(3)i^2 = -1\tag{3}

i3=i(4)i^3 = -i\tag{4}

i4=1(1)i^4 = 1\tag{1}

\vdots

  • 所以整个公式可以写成:

eix=k=0(1)k(2k)!x2k+i×k=0(1)k(2k+1)!x2k+1e^{ix} = \sum_{k = 0}^∞{\frac{(-1)^k}{(2k)!}x^{2k}} + i \times \sum_{k = 0}^∞{\frac{(-1)^k}{(2k + 1)!}x^{2k+1}}

  • 观察到这两个泰勒展开公式恰好是cosx,sinxcosx, sinx的泰勒展开公式,用三角函数代替后,有:

eix=cos(x)+isin(x)e^{ix} = cos(x) + isin(x)

  • Q.E.D

欧拉公式的几何意义:

  • 已知在复平面内cos(x)+isin(x)cos(x) + isin(x)表示的是一个单位圆
  • 而欧拉公式eix=cos(x)+isin(x)e^{ix} = cos(x) + isin(x)恰好就是这个单位圆的表达
  • 参数方程的视角来看:

f(t)=cos(t)+isin(t)f(t) = cos(t) + isin(t)

  • 这个公式实际上描述的是以角速度为1地在复平面内的单位圆上运动

eit=f(t)=cos(t)+isin(t)e^{it} = f(t) = cos(t) + isin(t)

  • 所以欧拉公式的几何意义是:用一个简单的component来表示在复平面内的单位圆上以某个角速度运动这个movement
  • 一个运动,用一个简洁的指数就可以表达

eite^{it}


这就引出了欧拉公式在傅里叶变换中的最终格式: 角速度形式

  • 上文只是表示角速度为1的情况,那么如何扩展到角速度为ω\omega的情况?
  • 对于三角函数形式,为了表示角速度应该用如下方式:

f(t)=cos(ωt)+isin(ωt)f(t) = cos(\omega t) + isin(\omega t)

  • 所以对于exponential表示就非常地straight forward了

eiωt=f(t)=cos(ωt)+isin(ωt)e^{i\omega t} = f(t) = cos(\omega t) + isin(\omega t)


总结欧拉公式在傅里叶变换中的应用:

  • 注意:我接下来会提供两个版本的公式都是可行的,但是在实际运用中我们更常用后面的版本
  • 公式1:

eiωt=cos(ωt)+isin(ωt)e^{i\omega t} = cos(\omega t) + isin(\omega t)

  • eiωte^{i\omega t}的意义: 在单位圆上以角速度为ω,向逆时针方向做圆周运动
  • 公式2 (更方便且常用):

eiωt=cos(ωt)isin(ωt)e^{- i\omega t} = cos(\omega t) - isin(\omega t)

  • eiωte^{ -i\omega t}意义: 在单位圆上以角速度ω, 向顺时针方向做圆周运动
    公式2更常用,因为他更方便,后面会知道为什么


傅里叶变换(连续)的数学理解

铺垫了这么多,终于到最后的傅里叶变换环节了!


傅里叶变换的意义:

  • 傅里叶变换把一个函数从时域转向频域
  • 人话:

傅里叶变换把一个叠加在一起的周期函数按照傅里叶级数中的正交基分解成几个不同的频率的“纯三角函数”傅里叶变换把一个叠加在一起的周期函数 \\ \mathbf{按照傅里叶级数中的正交基分解成几个不同的频率的“纯三角函数”}


傅里叶变换是如何做到分解的呢?


可行性分析:

  • 傅里叶级数告诉我们大部分的周期函数都可以分解成几个三角函数正交基的线性组合

intuition:

  • 傅里叶变换的intuition其实非常简单,就是:
  • 遍历整个频域,找到出现在数据中的所有频率的基底

极坐标中的三角函数波的传播:

  • 傅里叶变换利用了一个在单位圆上的波
  • 考虑这个“波”的参数方程,如下图所示:

{θ=ωtr=sin(kt)\left \{ \begin{array}{lr} \theta = \omega t \\ r = sin(k t) \end{array} \right .

  • 这个公式有两个组成部分:
    • 第一个组成部分,即ω关于时间t是线性的,即描述一个点在圆周上逆时针匀速转动,运动角速度为ω
    • 第二个组成部分,即r关于θ的函数是 sin(kt) 类型的(这里k可以理解为这个圆上某个点的“简谐运动的角速度”)
  • 这幅图中ω=1,k=4\omega = 1, k = 4

重点分析“单位圆上传播的波”

  • 还是那个公式:

{θ=ωtr=sin(kt)\left \{ \begin{array}{lr} \theta = \omega t \\ r = sin(k t) \end{array} \right .

  • 如果这时候我们设ω=4,k=3.8\omega = 4, k = 3.8呢?
  • 如果这时候我们设k=ω=4k = \omega = 4呢?
  • 有没有发现有趣的现象?
  • 当k = ω的时候, 这个波的质心偏离原点最远?
  • 这就是傅里叶变换的核心

傅里叶变换的核心:单位圆上的波如果 k = ω,波形的质心偏离最大

对于函数:

{θ=ωtr=sin(kt)+b\left \{ \begin{array}{lr} \theta = \omega t \\ r = sin(k t) + b \end{array} \right .

傅里叶变换遍历所有可能的ω值对应的质心距离原点的距离来得知这个component的频率
对于叠加后的也是这样,如果一个频率在这个叠加的波中出现了,在进行ω值比对操作后就能分离出这个频率



利用欧拉公式实现的傅里叶变换(连续)


现在问题是:如何快捷的求出这个质心?

  • 这就是欧拉公式的用途
  • 欧拉公式可以 非常简洁地表示“在单位圆上匀速运动” 这个行为
  • 原始的参数方程 (其中g(t)是叠加后的周期数据):

{θ=ωtr=g(t)(1)\left \{ \begin{array}{lr} \theta = \omega t \\ r = g(t) \end{array} \right . \tag{1}

  • x-y坐标中的参数方程:

变换公式:{x=rcosθy=rsinθ(2)变换公式:\left \{ \begin{array}{lr} x = rcos\theta \\ y = rsin\theta \end{array} \right .\tag{2}

  • 由公式(1),(2)结合可得:

{x=g(t)cos(ωt)y=g(t)sin(ωt)(3)\left \{ \begin{array}{lr} x = g(t)cos(\omega t) \\ y = g(t)sin(\omega t) \end{array} \right .\tag{3}

  • 由俯角公式可得,对于复数c=x+iyc = x + iy

c=g(t)cos(ωt)+ig(t)sin(ωt)c = g(t)cos(\omega t) + ig(t)sin(\omega t)

c=g(t)(cos(ωt)+isin(ωt))c = g(t)(cos(\omega t) + isin(\omega t))

  • 根据欧拉公式可得:

c=g(t)eiωtc = g(t)e^{i\omega t}

  • 转为顺时针:

c=g(t)eiωtc = g(t)e^{-i\omega t}

  • 这个c可以写成一个关于t的方程,就是这个参数方程的复数域公式(可以非常容易的发现复数域的接入让这个参数方程更简洁了)

定义: h(t)=g(t)eiωt定义: \ h(t) = g(t)e^{-i\omega t}


质心求法:

  • 对于定义域在[a,b][a, b]上的周期函数 g(t),质心的求法推导如下:
  • 首先我们可以取几个在复平面上的样例点,求平均值,这个平均值为一个复数(这就是复数的优势,可以用一个公式表示原本在二维坐标系中两个方程才能表示的操作)
    • 在实二维坐标系中我们需要在x,y方向上分别求平均,而对于复数,一个公式就能搞定
  • 对n个采样点的求和:

Mass Center=1nk=1ng(tk)eiωtkMass \ Center = \frac{1}{n}\sum_{k = 1}^ng(t_k)e^{-i\omega t_k}

  • 如果采样点遍布整个函数曲线,在[t1,t2][t_1, t_2]上,我们可以推出:

Mass Center=1t2t1t1t2g(t)eiωtdtMass \ Center = \frac{1}{t_2 - t_1}\int_{t_1}^{t_2}g(t)e^{-i\omega t}dt


接下来距离真正的傅里叶变换只有一步了:

  • 质心的计算公式如下:

Mass Center=1t2t1t1t2g(t)eiωtdtMass \ Center = \frac{1}{t_2 - t_1}\int_{t_1}^{t_2}g(t)e^{-i\omega t}dt

  • 真实的傅里叶变化就仅仅是把“平均”部分给去掉了,然后写成关于ω的方程

g^(ω)=t1t2g(t)eiωtdt\hat{g}(\omega) = \int_{t_1}^{t_2}g(t)e^{-i\omega t}dt

  • 去掉其实更科学,理由如下:
    • 首先,这个公式的几何意义为质心在复平面内位置的加权:

    g^(ω)=这个基底在周期中的持续时间×质心在复平面内的位置\hat{g}(\omega) = 这个基底在周期中的持续时间 \times 质心在复平面内的位置

    • 这么做除了简化,更主要的是为了考虑到基底的持续存在时间长对函数的意义就更大
  • 另外,如果这么变后,就没必要固定[a, b]定义域了,可以直接对整个实数域积分了

g^(ω)=+g(t)eiωtdt\hat{g}(\omega) = \int_{-∞}^{+∞}g(t)e^{-i\omega t}dt

  • 最后还有另一种“频率”形式的傅里叶变换,其实更常用
    • 我们实际上想要的频率f而不是角速度ω,不过两者之间可以转换:

    ω=2πf\omega = 2\pi f

    • 带入可以得出:

    g^(f)=+g(t)e2πiftdt\hat{g}(f) = \int_{-∞}^{+∞}g(t)e^{-2\pi if t}dt

  • 第一种更接近傅里叶变换的实质,但是第二种更接近傅里叶变换的“目的”


傅里叶变换总结:


公式的两个写法

  • 角速度形式:

g^(ω)=+g(t)eiωtdt\hat{g}(\omega) = \int_{-∞}^{+∞}g(t)e^{-i\omega t}dt

  • 频率形式(更常用)

g^(f)=+g(t)e2πiftdt\hat{g}(f) = \int_{-∞}^{+∞}g(t)e^{-2\pi if t}dt


公式的意义:

  • 现在我们可以用数学的语言来表述由时域转为频域

g(t)傅里叶变换g^(f)g(\mathbf{t}) \stackrel{傅里叶变换}{\longrightarrow} \hat{g}(\mathbf{f})

  • 从关于变量“t”的方程转为关于变量“f”的方程

公式用途:

  • 傅里叶变换的公式返回值应该是一个complex number

g^(f)=+g(t)e2πiftdt\hat{g}(f) = \int_{-∞}^{+∞}g(t)e^{-2\pi if t}dt

g^(f)C\hat{g}(f) \in \mathbf{C}

  • 我们现在需要从这个复数解算出哪些频域中的基占比更大

定义两个操作:

对于复数c: c=a+bi对于复数c: \ c = a + bi

  • 定义函数Re[c]Re[c], 意思是取复数c的实部

Re[c]=aRe[c] = a

  • 同理,定义函数Im[c]Im[c], 意思是取复数c的虚部

Im[c]=bIm[c] = b

  • 为了帮助理解,复数c可以写成以下形式:

c=Re[c]+Im[c]×ic = Re[c] + Im[c] \times i


现在我们可以依据两个函数来分析结果:

  • 首先,既然知道了质心坐标在复平面上的表示,那么我们需要求出质心距离原点的距离
  • 所以我们定义幅度谱, 意思是求出质心关于原点的距离,距离越大,这个基的含量越高

g^(f)=(Re[g^(f)])2+(Im[g^(f)])2|\hat{g}(f)| = \sqrt{(Re[\hat{g}(f)])^2 + (Im[\hat{g}(f)])^2}

  • 然后我们想知道每个基底相位的偏移,所以定义了相位谱

arg(g^(f))=arctan(Im[g^(f)]Re[g^(f)])arg(\hat{g}(f)) = arctan(\frac{Im[\hat{g}(f)]}{Re[\hat{g}(f)]})

  • 结合频率谱和相位谱我们就得到了原周期函数用傅里叶级数基底分解后的结果