大家好,又见面了,我是你们的朋友全栈君。
首先,傅里叶分析是指把一个周期或非周期函数展开成一个个三角函数的叠加,如果是对其还没有基本概念的,可以看看傅里叶分析之掐死教程,这篇文章不依赖数学公式却又十分透彻地讲述了傅里叶分析的基本概念,十分值得一读。但如果先深入探讨其中的数学由来,接下来会讲述详细的数学推导。
傅里叶级数
三角函数系的正交性
三角函数系:{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=0,n=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=0,n=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(n−m)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=0∑∞ancosnx+n=0∑∞bnsinnx=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=L1∫−LLf(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=L1∫−LLf(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=L1∫−LLf(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=T2∫0Tf(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=T2∫0Tf(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=T2∫0Tf(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θ+e−iθ)
s i n θ = 1 2 i ( e i θ − e − i θ ) sinθ = \frac 1 2 i(e^{iθ}-e^{-iθ}) sinθ=21i(eiθ−e−iθ)
把这两条式子代入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=1∑∞2an−ibneinωt+n=1∑∞2an+ibne−inωt=n=0∑02a0einωt+n=1∑∞2an−ibneinωt+n=−1∑−∞2a−n+ib−neinω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=T1∫0Tf(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=2an−ibn=21(T2∫0Tf(t)cosnωt−iT2∫0Tf(t)sinnωt)=T1∫0Tf(t)(cosnωt−isinnωt)dt=T1∫0Tf(t)e−inω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=2a−n+ib−n=T1∫0Tf(t)(cosnωt−isinnωt)dt=T1∫0Tf(t)e−inω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=T1∫0Tf(t)e−inω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=T1∫0Tf(t)e−inω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=−∞∑∞T1∫−2T2TfT(t)e−inω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)e−inω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π1∫−∞∞∫−∞∞f(t)e−iω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)e−iω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π1∫−∞∞F(ω)eiωtdω
傅里叶变换的所有内容讲解完毕了,傅里叶变换其实是一种特殊的拉普拉斯变换(s=iω),遵循拉普拉斯变换的所有性质。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160865.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...