傅里叶级数与傅里叶变换公式推导「建议收藏」

傅里叶级数与傅里叶变换公式推导「建议收藏」首先,傅里叶分析是指把一个周期或非周期函数展开成一个个三角函数的叠加,如果是对其还没有基本概念的,可以看看傅里叶分析之掐死教程,这篇文章不依赖数学公式却又十分透彻地讲述了傅里叶分析的基本概念,十分值得一读。但如果先深入探讨其中的数学由来,接下来会讲述详细的数学推导。傅里叶级数三角函数系的正交性三角函数系:{1,sinx,cosx,sin2x,cos2x,…,sinnx,cosnx,…},它由无数个sinnx和cosnx组成,其中n=0,1,2,…。正交性:∫−ππsin⁡nxcos⁡mxdx=0,

大家好,又见面了,我是你们的朋友全栈君。

首先,傅里叶分析是指把一个周期或非周期函数展开成一个个三角函数的叠加,如果是对其还没有基本概念的,可以看看傅里叶分析之掐死教程,这篇文章不依赖数学公式却又十分透彻地讲述了傅里叶分析的基本概念,十分值得一读。但如果先深入探讨其中的数学由来,接下来会讲述详细的数学推导。

傅里叶级数

三角函数系的正交性

三角函数系:{1,sinx,cosx,sin2x,cos2x,…,sinnx,cosnx,…},它由无数个sinnx和cosnx组成,其中n=0,1,2,…。

正交性:
∫ − π π sin ⁡ n x cos ⁡ m x d x = 0 \int^\pi_{-\pi}\sin nx \cos mx dx = 0 ππsinnxcosmxdx=0

∫ − π π cos ⁡ n x cos ⁡ m x d x = 0 , n ≠ m \int^\pi_{-\pi}\cos nx \cos mx dx = 0,n\neq m ππcosnxcosmxdx=0n=m

∫ − π π sin ⁡ n x sin ⁡ m x d x = 0 , n ≠ m \int^\pi_{-\pi}\sin nx \sin mx dx = 0,n\neq m ππsinnxsinmxdx=0n=m

当向量点乘等于0:
a ⃗ ⋅ b ⃗ = 0 \vec a \cdot \vec b = 0 a
b
=
0

则两个向量正交

拓展到函数中,两个函数相乘,原本点乘的加和变成取积分,则:
∫ x 2 x 1 f ( x ) g ( x ) d x = 0 \int^{x_1}_{x_2}f(x) g(x) dx = 0 x2x1f(x)g(x)dx=0
称为两个函数正交

证明其正交性,可以用积化和差公式:
∫ − π π cos ⁡ n x cos ⁡ m x d x = 1 2 ∫ − π π [ c o s ( n − m ) x + c o s ( n + m ) x ] d x = 0 \int^\pi_{-\pi}\cos nx \cos mx dx = \frac{1}{2}\int^\pi_{-\pi}[cos(n-m)x+cos(n+m)x]dx =0 ππcosnxcosmxdx=21ππ[cos(nm)x+cos(n+m)x]dx=0
其他情况同理。

周期为2π的函数展开

因此当一个函数f(x)周期为2π时,可以展开成
f ( x ) = ∑ n = 0 ∞ a n c o s n x + ∑ n = 0 ∞ b n s i n n x = 1 2 a 0 + ∑ n = 1 ∞ ( a n c o s n x + b n s i n n x ) f(x) = \sum^\infty_{n=0}a_ncosnx + \sum^\infty_{n=0}b_nsinnx = \frac 1 2 a_0 + \sum^\infty_{n=1}({a_ncosnx + b_nsinnx}) f(x)=n=0ancosnx+n=0bnsinnx=21a0+n=1(ancosnx+bnsinnx)
对两边取积分,由于三角函数的正交性
∫ − π π f ( x ) d x = 1 2 ∫ − π π a 0 d x = π a 0 \int_{-\pi}^\pi f(x)dx = \frac1 2\int_{-\pi}^\pi a_0dx = \pi a_0 ππf(x)dx=21ππa0dx=πa0

a 0 = 1 π ∫ − π π f ( x ) d x a_0 = \frac 1 {\pi}\int_{-\pi}^\pi f(x)dx a0=π1ππf(x)dx

原式乘以cos mx 再对两边取积分可得:
∫ − π π f ( x ) cos ⁡ m x d x = ∑ n = 1 ∞ ∫ − π π a n c o s n x c o s m x d x = ∫ − π π a n c o s 2 n x d x = a n π \int^\pi_{-\pi}f(x) \cos mx dx = \sum^\infty_{n=1}\int^\pi_{-\pi} a_ncosnx cosmx dx = \int^\pi_{-\pi} a_ncos^2 nx dx = a_n\pi ππf(x)cosmxdx=n=1ππancosnxcosmxdx=ππancos2nxdx=anπ

a n = 1 π ∫ − π π f ( x ) cos ⁡ n x d x a_n = \frac 1 \pi \int^\pi_{-\pi}f(x) \cos nx dx an=π1ππf(x)cosnxdx

同理,两边同乘sinmx再取积分可得:
b n = 1 π ∫ − π π f ( x ) sin ⁡ n x d x b_n = \frac 1 \pi \int^\pi_{-\pi}f(x) \sin nx dx bn=π1ππf(x)sinnxdx

周期为2L的函数展开

利用换元的方法,令: x = π L t x = \frac \pi L t x=Lπt ,即 t = L π x t = \frac L \pi x t=πLx,可得:
f ( t ) = a 0 2 + ∑ n = 1 ∞ ( a n c o s n π L t + b n s i n n π L t ) f(t) = \frac {a_0} 2 + \sum^\infty_{n=1}({a_ncos \frac{n\pi}{L}t + b_nsin\frac{n\pi}{L}t}) f(t)=2a0+n=1(ancosLnπt+bnsinLnπt)

a 0 = 1 L ∫ − L L f ( t ) d t a_0 = \frac 1 {L}\int_{-L}^L f(t)dt a0=L1LLf(t)dt

a n = 1 L ∫ − L L f ( x ) cos ⁡ n x d x a_n = \frac 1 L \int^L_{-L}f(x) \cos nx dx an=L1LLf(x)cosnxdx

b n = 1 L ∫ − L L f ( x ) sin ⁡ n x d x b_n = \frac 1 L \int^L_{-L}f(x) \sin nx dx bn=L1LLf(x)sinnxdx

在工程中t总是从0开始,周期T=2L,ω = π L = 2 π T \frac \pi L = \frac 2\pi T Lπ=π2T,此时:
f ( t ) = a 0 2 + ∑ n = 1 ∞ ( a n c o s ω t + b n s i n ω t ) f(t) = \frac {a_0} 2 + \sum^\infty_{n=1}({a_ncosωt + b_nsinωt}) f(t)=2a0+n=1(ancosωt+bnsinωt)

a 0 = 2 T ∫ 0 T f ( t ) d t a_0 = \frac 2 {T}\int_{0}^T f(t)dt a0=T20Tf(t)dt

a n = 2 T ∫ 0 T f ( x ) cos ⁡ n x d x a_n = \frac 2 T \int^T_{0}f(x) \cos nx dx an=T20Tf(x)cosnxdx

b n = 2 T ∫ 0 T f ( x ) sin ⁡ n x d x b_n = \frac 2 T \int^T_{0}f(x) \sin nx dx bn=T20Tf(x)sinnxdx

傅里叶级数的复数表达形式

欧拉公式:$ e^{iθ} = cosθ + isinθ$

可得:
c o s θ = 1 2 ( e i θ + e − i θ ) cosθ = \frac 1 2 (e^{iθ}+e^{-iθ}) cosθ=21(eiθ+eiθ)

s i n θ = 1 2 i ( e i θ − e − i θ ) sinθ = \frac 1 2 i(e^{iθ}-e^{-iθ}) sinθ=21i(eiθeiθ)

把这两条式子代入f(t)的式子中可得:
f ( t ) = a 0 2 + ∑ n = 1 ∞ a n − i b n 2 e i n ω t + ∑ n = 1 ∞ a n + i b n 2 e − i n ω t = ∑ n = 0 0 a 0 2 e i n ω t + ∑ n = 1 ∞ a n − i b n 2 e i n ω t + ∑ n = − 1 − ∞ a − n + i b − n 2 e i n ω t = ∑ − ∞ ∞ C n e i n ω t f(t) = \frac {a_0} 2 + \sum_{n=1}^\infty \frac {a_n-ib_n} 2 e^{in\omega t}+ \sum_{n=1}^\infty \frac {a_n+ib_n} 2 e^{-in\omega t} = \sum_{n=0}^0 \frac {a_0} 2 e^{in\omega t} + \sum_{n=1}^\infty \frac {a_n-ib_n} 2 e^{in\omega t}+ \sum_{n=-1}^{-\infty} \frac {a_{-n}+ib_{-n}} 2 e^{in\omega t} = \sum_{-\infty}^\infty C_n e^{in\omega t} f(t)=2a0+n=12anibneinωt+n=12an+ibneinωt=n=002a0einωt+n=12anibneinωt+n=12an+ibneinωt=Cneinωt
当n = 0时,
C n = a 0 2 = 1 T ∫ 0 T f ( t ) d t C_n = \frac {a_0} 2 = \frac 1 {T}\int_{0}^T f(t)dt Cn=2a0=T10Tf(t)dt
当n > 0时,
C n = a n − i b n 2 = 1 2 ( 2 T ∫ 0 T f ( t ) c o s n ω t − i 2 T ∫ 0 T f ( t ) s i n n ω t ) = 1 T ∫ 0 T f ( t ) ( c o s n ω t − i s i n n ω t ) d t = 1 T ∫ 0 T f ( t ) e − i n ω t d t C_n = \frac {a_n-ib_n} 2 = \frac 1 2 (\frac 2 T \int_0^T f(t)cos{n\omega t} – i\frac 2 T \int_0^Tf(t)sin{n\omega t}) = \frac 1 T \int_0^T f(t)(cos{n\omega t} – isin{n\omega t}) dt = \frac 1 T \int_0^T f(t) e^{-in\omega t}dt Cn=2anibn=21(T20Tf(t)cosnωtiT20Tf(t)sinnωt)=T10Tf(t)(cosnωtisinnωt)dt=T10Tf(t)einωtdt
当n < 0时,
C n = a − n + i b − n 2 = 1 T ∫ 0 T f ( t ) ( c o s n ω t − i s i n n ω t ) d t = 1 T ∫ 0 T f ( t ) e − i n ω t d t C_n = \frac {a_{-n}+ib_{-n}} 2 = \frac 1 T \int_0^T f(t)(cos{n\omega t} – isin{n\omega t}) dt = \frac 1 T \int_0^T f(t) e^{-in\omega t}dt Cn=2an+ibn=T10Tf(t)(cosnωtisinnωt)dt=T10Tf(t)einωtdt

因此得出结论,一个周期函数f(t)有f(t)=f(t+T)时:
f ( t ) = ∑ − ∞ ∞ C n e i n ω t f(t) = \sum_{-\infty}^\infty C_n e^{in\omega t} f(t)=Cneinωt

C n = 1 T ∫ 0 T f ( t ) e − i n ω t d t C_n = \frac 1 T \int_0^T f(t) e^{-in\omega t}dt Cn=T10Tf(t)einωtdt

傅里叶变换

对于 C n C_n Cn来说,它的值是一个复数,而nω是一个离散的值,那么可以在代表nω的轴上一个个特定的点上设一个平面,这个平面是一个复平面,它的长度和方向代表 C n C_n Cn
在这里插入图片描述

在工程上,横坐标为时间的波形图称为时域表达,而这幅图显示的是在各种不同频率下的值,称为频域表达,也是波形图的频谱,这就是从不同的角度看时间,每一种波形都对应一种频谱。不过很多时候的频谱都不是这种复平面三维的,我们会把 C n C_n Cn的幅度即模单独拿出来,就可以表示这个函数在不同频率下的强度了。
在这里插入图片描述

当T增大时,ω数值减小,nω之间就挨得越近。T趋于无穷时会形成一条连续的曲线:

在这里插入图片描述

由:
f ( t ) = ∑ − ∞ ∞ C n e i n ω t f(t) = \sum_{-\infty}^\infty C_n e^{in\omega t} f(t)=Cneinωt

C n = 1 T ∫ 0 T f ( t ) e − i n ω t d t C_n = \frac 1 T \int_0^T f(t) e^{-in\omega t}dt Cn=T10Tf(t)einωtdt

得到:
f T ( t ) = ∑ n = − ∞ ∞ 1 T ∫ − T 2 T 2 f T ( t ) e − i n ω 0 t d t e i n ω 0 t f_T(t) = \sum_{n=-\infty}^{\infty}\frac 1 T \int_{-\frac T 2}^{\frac T 2} f_T(t) e^{-in\omega_0 t}dt e^{inω_0t} fT(t)=n=T12T2TfT(t)einω0tdteinω0t

f T ( t ) = ∑ n = − ∞ ∞ Δ ω 2 π ∫ − T 2 T 2 f T ( t ) e − i n ω 0 t d t e i n ω 0 t f_T(t) = \sum_{n=-\infty}^{\infty}\frac {\Deltaω} {2\pi} \int_{-\frac T 2}^{\frac T 2} f_T(t) e^{-in\omega_0 t}dt e^{inω_0t} fT(t)=n=2πΔω2T2TfT(t)einω0tdteinω0t

T → ∞ T \rightarrow \infty T
f ( t ) = 1 2 π ∫ − ∞ ∞ ∫ − ∞ ∞ f ( t ) e − i ω t d t e i n ω t d ω f(t) = \frac {1} {2\pi} \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(t) e^{-i\omega t}dt e^{inωt}d\omega f(t)=2π1f(t)eiωtdteinωtdω
因此我们把中间的公式称为傅里叶变换(FT)
F ( ω ) = ∫ − ∞ ∞ f ( t ) e − i ω t d t F(ω) = \int_{-\infty}^{\infty} f(t) e^{-i\omega t}dt F(ω)=f(t)eiωtdt
通过这个函数可以表示在任何频率的情况下的三角函数的波形的振幅,这通常是一个复数a+bi,其中实数部分代表cos,虚数部分代表sin。而负频率没有现实意义,其振幅为正频率的共轭,只是为了在数学上的计算便利,实际上用 a 2 + b 2 \sqrt{a^2+b^2} a2+b2
表示其振幅。

外面套的公式称为傅里叶变换的逆变换(IFT)
f ( t ) = 1 2 π ∫ − ∞ ∞ F ( ω ) e i ω t d ω f(t) = \frac {1} {2\pi} \int_{-\infty}^{\infty} F(ω) e^{iωt}d\omega f(t)=2π1F(ω)eiωtdω
傅里叶变换的所有内容讲解完毕了,傅里叶变换其实是一种特殊的拉普拉斯变换(s=iω),遵循拉普拉斯变换的所有性质。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160865.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 远程控制木马原理_安卓远程控制木马

    远程控制木马原理_安卓远程控制木马 导读:刘东发(http://www.codelive.net)的杰作——–远程控制木马”偷窥者”VC6.0编译通过。2001年是中国的木马大丰收的一年. 首先是灰鸽子的诞生.灰鸽子早期版本开放源代码,灰鸽子的作者葛军(俺安徽的老乡,呵呵可不是拉关系),开始还倒不错,开放了源代码,后来功能齐全后,葛军开始翻脸了,不但不公开源代码,还收费.灰鸽子是delphi版的,本人愚

    2022年10月31日
  • 导入Excel数据到数据库

    导入Excel数据到数据库

    2021年11月12日
  • Oracle与MySQL区别「建议收藏」

    Oracle与MySQL区别「建议收藏」1、Oracle是大型数据库,而MySQL是中小型数据库。但是MySQL是开源的,Oracle是收费的2、Oracle的内存占有量非常大,而mysql非常小3、MySQL支持主键自增长,插入时会自动增长。Oracle主键一般使用序列。4、MySQL分页用limit关键字,而Oracle使用rownum字段表明位置5、MySQL中0、1判断真假,Oracle中truefalse6、MySQL中命令默认commit,但是Oracle需要手动提交7、MySQL在windows环境下大小写不敏感,在l

  • linux教程,linux视频教程,linux…

    linux教程,linux视频教程,linux…IBM的linux学习资源—Linux编程和系统管理新手入门: http://www.ibm.com/developerworks/cn/linux/newto/Windows到Linux之旅:系列文章概述: http://www.ibm.com/developerworks/cn/linux/l-roadmap/index.html为Windows用户准备的简明L

  • PHP简单留言板代码[通俗易懂]

    PHP简单留言板代码[通俗易懂]&lt;HTML&gt;//留言板主题作者…

  • 异常处理面试题_运行值长面试题

    异常处理面试题_运行值长面试题java提供了两种异常机制。一种是运行时异常(RuntimeExepction),一种是受检异常(checkedexecption)。受检异常:我们经常遇到的IO异常及sql异常就属于检查式异常。对于这种异常,java编译器要求我们必须对出现的这些异常进行catch,面对这种异常要么往上抛,要么就catch运行时异常:我们可以不处理。当出现这样的异常时,总是由虚拟机接管。RuntimeExec

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号