傅里叶级数和傅里叶变换(从线性代数角度)

这篇博客通过线性代数的角度探讨傅里叶级数和傅里叶变换。讲解了如何将函数转换为cos(x), sin(x)或e^(ix)的形式,以及如何利用正交向量的概念来理解傅里叶变换。博客提到了周期函数的傅里叶级数展开,以及当周期趋向于无穷时,如何得到傅里叶变换。还讨论了傅里叶变换的收敛条件和能量概念。" 126902499,13520627,Java中的Assert断言工具类详解,"['Java', '开发语言', 'JVM']

主要参考Stanford的公开课。

cos(x),sin(x), eixe^{ix}eix 的转换

周期是2π2 \pi2π 的情况
f(x)=a0+∑1∞akcos(kx)+∑1∞bksin(kx) f(x)=a_0+\sum\limits_{1}^{\infty} {a_k}cos(kx)+\sum\limits_{1}^{\infty}{b_k}sin(kx)f(x)=a0+1akcos(kx)+1bksin(kx)
f(x)=∑0∞ckeikx f(x)=\sum\limits_{0}^{\infty}{c_k}e^{ikx}f(x)=0ckeikx
ck=ak2−ibk2(k>0)c_k=\dfrac{a_k}{2}-i\dfrac{b_k}{2} (k>0)ck=2aki2bk(k>0)
由于c−k=ck‾c_{-k}=\overline{c_k}ck=ck,所以第二个式子中虚部最后是被消掉的。
假设
ck=a2−ib2c_k=\frac{a}{2}-i\frac{b}{2}ck=2ai2b
   ckeikx+c−ke−ikx\space\space\space c_ke^{ikx}+c_{-k}e^{-ikx}   ckeikx+ckeikx
=(a−ib)[cos⁡(kx)+isin⁡(kx)]+(a+ib)[cos⁡(kx)−isin⁡(kx)]2=\dfrac{(a-ib)[\cos(kx)+i\sin(kx)]+(a+ib)[\cos(kx)-i\sin(kx)]}{2}=2(aib)[cos(kx)+isin(kx)]+(a+ib)[cos(kx)isin(kx)]
=acos⁡kx+bsin⁡kx=a\cos{kx}+b\sin{kx}=acoskx+bsinkx

把函数和向量类比

首先是复变函数内积的定义,
∫f(x)g(x)‾dx\int f(x)\overline{g(x)}dxf(x)g(x)dx
有了内积之后,就可以定义正交了,
∫f(x)g(x)‾dx=0\int f(x)\overline{g(x)}dx=0f(x)g(x)dx=0
然后,
cos(x),cos(2x),cos(3x)...sin(x),sin(2x),sin(3x)...cos(x), cos(2x), cos(3x)... \\ sin(x), sin(2x),sin(3x)...cos(x),cos(2x),cos(3x)...sin(x),sin(2x),sin(3x)...
是一组正交向量,但是本科的时候就只理解到这里,其实还可以再向后想一点点的,
...,e−2ix,e−ix,e0ix,eix,e2ix,e3ix,......,e^{-2ix},e^{-ix},e^{0ix},e^{ix},e^{2ix},e^{3ix},......,e2ix,eix,e0ix,eix,e2ix,e3ix,...
也是一组正交的向量,但是后者更好,因为后面每个向量的长度是相同的,也就是,
∫02πcos⁡xcos⁡xdx=π\int_{0}^{2\pi}\cos{x}\cos{x}dx=\pi02πcosxcosxdx=π
∫02π1dx=2π\int_{0}^{2\pi}1dx=2\pi02π1dx=2π
∫02πeixe−ixdx=2π\int_{0}^{2\pi}e^{ix}e^{-ix}dx=2\pi02πeixeixdx=2π
还有一个小细节,这两组基的个数是相等的,都是整数的个数。
把一个函数转成一组正交函数的线性组合,相当于把这个函数向这些正交基投影,
ck2π=∫02πf(x)eikx‾2πdxc_k\sqrt{2\pi}=\int_{0}^{2\pi} f(x){\frac{\overline{e^{ikx}}}{\sqrt{2\pi}}}dxck2π=02πf(x)2πeikxdx
或者,
ck=12π∫02πf(x)e−ikxdxc_k=\frac{1}{2\pi}\int_{0}^{2\pi} f(x){e^{-ikx}}dxck=2π102πf(x)eikxdx
周期为TTT 时,
ck=1T∫0Tf(x)e−ik2πTxdxc_k=\frac{1}{T}\int_{0}^{T} f(x){e^{-ik\frac{2\pi}{T}x}}dxck=T10Tf(x)eikT2πxdx
然后是收敛条件,
lim⁡k→∞∫02π(f(x)−∑0kckeikx)2dx=0\lim\limits_{k\rightarrow\infty}\int_{0}^{2\pi}(f(x)-\sum\limits_{0}^{k}c_{k}e^{ikx})^2dx=0klim02π(f(x)0kckeikx)2dx=0
积分和差的平方和在一起是不是有最小二乘法的感觉,用向量的东西做类比就是f(x)是可以完全被这组有无穷个的正交的基表示。
然后是energy,
∑0∞∣ck∣2\sum\limits_{0}^{\infty}|c_k|^20ck2
或者,
∑0∞ckck‾\sum\limits_{0}^{\infty}c_k\overline{c_k}0ckck
也就是在取定基下,向量的长度。

傅里叶变换

从傅里叶级数到傅里叶变换,视频中老师用的办法是使 T→∞T\rightarrow\inftyT
具体是随便一个定义域是闭区间的函数,把这个函数的定义域扩大,扩大的地方函数值为0。由于周期越来越大,想要的傅里叶级数展开的每一项系数会越来越小,最终变为0。为了时傅里叶级数不为零,所以把求傅里叶级数的系数时前面要乘的1T\frac{1}{T}T1 去掉,于是变为,
ck=∫−∞+∞f(x)e−ikxdxc_k=\int_{-\infty}^{+\infty} f(x){e^{-ikx}}dxck=+f(x)eikxdx
其实,这里我还是没有想明白。
不过也许可以从另一个角度想,
f(x)f(x)f(x) 可以看成是一组自然基底δ(x−x0),x0∈R\delta(x-x_0),x_0\in Rδ(xx0),x0R 的线性组合,由于基是连续的,所以求和只好变为积分,
f(x)=∫−∞+∞f(x0)δ(x−x0)dx0f(x)=\int_{-\infty}^{+\infty}f(x_0)\delta(x-x_0)dx_0f(x)=+f(x0)δ(xx0)dx0
同时,f(x)f(x)f(x) 还可以看成是另一组基底ei2πsx,s∈Re^{i2{\pi} sx},s\in Rei2πsx,sR 的线性组合,
f(x)=∫−∞+∞csei2πsxdsf(x)=\int_{-\infty}^{+\infty}c_s e^{i2{\pi} sx}dsf(x)=+csei2πsxds
为了比较,把前面式子中的x0x_0x0 换成s,
f(x)=∫−∞+∞f(s)δ(x−s)dsf(x)=\int_{-\infty}^{+\infty}f(s)\delta(x-s)dsf(x)=+f(s)δ(xs)ds
这样就可以很清楚的看到:

  • f(s)f(s)f(s)csc_scs相对应,都是函数给定后,就确定的常数,只是前者是一眼就能看出的,后者需要傅里叶变换才能求出
  • δ(x−s)\delta(x-s)δ(xs)ei2πsxe^{i2{\pi} sx}ei2πsx 相对应 他们都是s 和 x 的函数,在x自由变化时,刚好组成两组正交的基底,并且两组基的个数是相同的,都是x可以取的值的个数,也就是实数的个数。

这里有个重要的等式,
∫−∞+∞eiasds=δ(a)\int_{-\infty}^{+\infty}e^{ias}ds=\delta(a)+eiasds=δ(a)
或者,
∫−∞+∞eisx1eisx2‾ds=∫−∞+∞eisx1e−isx2ds=∫−∞+∞eis(x1−x2)ds=δ(x1−x2)\int_{-\infty}^{+\infty}e^{isx_1}\overline{e^{isx_2}}ds= \int_{-\infty}^{+\infty}e^{isx_1}{e^{-isx_2}}ds=\int_{-\infty}^{+\infty}e^{is(x_1-x_2)}ds=\delta(x1-x2)+eisx1eisx2ds=+eisx1eisx2ds=+eis(x1x2)ds=δ(x1x2)

把逆变换公式代入变换

为了方便我们假设变换公式
F(w)=∫−∞+∞f(t)e−jwtdt F(w)=\int_{-\infty}^{+\infty}f(t)e^{-jwt}dt F(w)=+f(t)ejwtdt
逆变换公式 (其实,对比傅里叶级数,逆变换公式是更容易的理解的)
f(t)=∫−∞+∞F(w)ejwtdw f(t)=\int_{-\infty}^{+\infty}F(w)e^{jwt}dw f(t)=+F(w)ejwtdw
逆变换代入变换
F(w0)=∫−∞+∞[∫−∞+∞F(w)ejwtdw]e−jw0tdt F(w_0)=\int_{-\infty}^{+\infty} \left[ \int_{-\infty}^{+\infty}F(w)e^{jwt}dw \right] e^{-jw_0t}dt F(w0)=+[+F(w)ejwtdw]ejw0tdt
F(w0)=∫−∞+∞[∫−∞+∞F(w)ej(w−w0)tdw]dt F(w_0)=\int_{-\infty}^{+\infty} \left[ \int_{-\infty}^{+\infty}F(w)e^{j(w-w_0)t}dw \right] dt F(w0)=+[+F(w)ej(ww0)tdw]dt
交换内外积分,
=∫−∞+∞[∫−∞+∞F(w)ej(w−w0)tdt]dw=\int_{-\infty}^{+\infty} \left[ \int_{-\infty}^{+\infty}F(w)e^{j(w-w_0)t}dt \right] dw =+[+F(w)ej(ww0)tdt]dw
=∫−∞+∞F(w)[∫−∞+∞ej(w−w0)tdt]dw=\int_{-\infty}^{+\infty}F(w) \left[ \int_{-\infty}^{+\infty}e^{j(w-w_0)t}dt \right] dw=+F(w)[+ej(ww0)tdt]dw
=∫−∞+∞F(w)δ(w−w0)dw=\int_{-\infty}^{+\infty}F(w) \delta(w-w_0) dw =+F(w)δ(ww0)dw
=F(w0)=F(w_0)=F(w0)

### 回答1: 嗨!首先感谢你的问题。Matlab可以使用内置函数fft进行傅里叶变换的计算。下面是一个简单的示例代码: ``` % 定义时间序列 t = linspace(0,2*pi,1000); % 定义信号 y = sin(2*pi*5*t) + cos(2*pi*10*t); % 计算傅里叶变换 Y = fft(y); % 计算频率序列 f = linspace(0,1,1000); % 绘制频谱图 plot(f,abs(Y)); ``` 关于傅里叶变换求解偏微分方程积分方程,这是一个非常广泛的领域,Matlab在这个领域也有很多的工具箱函数。具体的实现方法可以根据不同的方程问题进行选择调整。如果你有具体的问题需要求解,可以提供更多的信息,我可以为你提供更具体的帮助。 ### 回答2: Matlab是一种功能强大的科学计算软件,可以方便地实现傅里叶变换(Fourier Transform)傅立叶级数展开(Fourier Series Expansion)。 傅里叶变换是一种将一个信号从时域(时间域)转换到频域(频率域)的数学工具,通过分析信号的频谱特征,可以对信号进行频谱分析、滤波、降噪等操作。在Matlab中,可以使用fft()函数来实现离散傅里叶变换(DFT),ifft()函数来实现离散傅里叶逆变换(IDFT),fftshift()函数用于对频谱进行中心化处理。 傅立叶级数展开可以将一个周期信号表示为一系列正弦余弦函数的线性组合,它在信号分析的应用中被广泛使用。在Matlab中,可以使用FourierSeries()函数来实现傅立叶级数展开,可以指定展开的周期、频率分量的数量振幅等参数。 傅立叶变换在偏微分方程积分方程的求解中也有重要应用。通过将偏微分方程或积分方程转化到频率域,可以简化求解过程。在Matlab中,可以通过傅里叶变换来求解时谐偏微分方程(Time-Harmonic PD Es),即偏微分方程的解具有频率依赖性质。通过将时谐偏微分方程转化为代数方程,可以使用Matlab的求解器(如solve()函数)得到解析解。 对于积分方程,傅立叶变换同样可以发挥作用。可以通过将积分方程转化为代数方程,然后使用Matlab的求解器进行求解。在这个过程中,使用傅里叶变换的目的是对局部波的响应进行频谱分析,并将问题转化为频域下的代数方程求解。 综上所述,Matlab提供了丰富的函数工具,可以方便地实现傅里叶变换傅立叶级数展开,并应用于偏微分方程积分方程的求解。这些功能使得Matlab成为工程学、物理学以及其他科学领域中重要的数值计算信号处理工具。 ### 回答3: Matlab可以用来实现傅立叶变换,从而求解偏微分方程积分方程。 傅立叶变换是一种重要的数学工具,可以将一个函数表示为一系列正弦余弦函数的组合。Matlab中有现成的函数fft可以实现离散傅立叶变换(DFT),而ifft函数可以进行逆傅立叶变换。 对于偏微分方程,我们可以通过傅立叶变换将微分方程转化为代数方程。首先,我们将待求函数进行傅立叶变换,得到其频率域表示。然后,我们可以将微分方程中的导数操作转化为乘法操作,从而得到一个代数方程。通过求解这个代数方程,我们可以得到频率域中的解。最后,使用ifft函数将频率域中的解进行逆傅立叶变换,得到时域中的解。 对于积分方程,我们也可以利用傅立叶变换来求解。通过将积分方程进行傅立叶变换,可以将其转化为代数方程。然后,我们可以通过求解这个代数方程来得到频率域中的解。最后,再将频率域中的解进行逆傅立叶变换,得到时域中的解。 总之,利用Matlab中的fftifft函数,我们可以利用傅立叶变换来求解偏微分方程积分方程。这为我们研究解决各种数学问题提供了一种有效的方法。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值