本编文章探讨一下数学物理方法中一个常见的问题,即如何用傅立叶变换得到PDE或者积分方程的解。在文章的最后,会附上MATLAB的实现代码。学疏才浅,欢迎大家指点!


1. 什么是傅立叶变换?

  • 从数学形式上来看,FT的表示在各个领域有著细微的差别。

(*本文遵循以下的定义)

egin{align} &quad hat{f(s)}=int_{- ∞}^{+ ∞}f(x)e^{-isx}dx quad正变换\ & quad f(x)=frac{1}{2pi}int_{- ∞}^{+ ∞}hat{f(s)}e^{isx}ds quad 逆变换end{align}

  • 直观意义上来说,是将现有收集到的时域信号转换到频域,从而更有效的进行分析

更详细的入门介绍可以看这里:

Heinrich:傅里叶分析之掐死教程(完整版)更新于2014.06.06?

zhuanlan.zhihu.com图标

还有斯坦福EE的公开课(EM的教授吐槽过某一章内容 0. 0)时间充裕的话,了解一下。

EE261 - The Fourier Transform and its Applications?

see.stanford.edu
图标

2. 傅立叶变换解决这类问题的优势和缺点分别是什么?

优势:可以处理全平面上的问题, 与拉普拉斯变换不同的是不要求时间 t > 0

可以将关于空间的多次偏微分直接操作出来,而关于时间的偏微分化为常微分。


3. 什么样的PDE可以这么解决?

个人的观点是,局限于线性PDE


4. 具体的例子:一维波动方程

考虑作对于x的傅立叶变换:

 quad frac{partial^2 u}{partial t^2} = frac{partial^2 u}{partial x^2}, -infty<x<+infty,t>0\ u(x,t)|_{t=0} = cos(x),quad frac{partial u}{partial u}|_{t=0} = sin(x)\

接著我们对等式两边做傅立叶变换

 hat{U}(omega,t) = int_{- ∞}^{+ ∞}u(x,t)e^{-iomega x}dx quad (定义) \ mathcal{F}[frac{partial^2 u}{partial x^2}] = - omega^2 hat{U}(omega,t), quad mathcal{F}[frac{partial^2 u}{partial t^2}] = frac{d^2}{dt^2} hat{U}(omega,t),

从这里我们可以看到FT的优势是如何体现出来的:

将关于空间的多次偏微分直接操作了出来,而关于时间的偏微分化为常微分。

当然我们也必须把边界条件作傅立叶变换。

egin{align} & quad mathcal{F}[cos(x)] =pi [delta(omega +1) +delta(omega -1)], \ & quad mathcal{F}[sin(x)] = ipi [delta(omega +1) -delta(omega -1)] \ end{align}

代码段:

>> syms x w;
>> f1 = cos(x);
>> f2 = sin(x);
>> F1 = fourier(f1)

F1 =
pi*(dirac(w - 1) + dirac(w + 1))
>> F2 = fourier(f2)

F2 =
-pi*(dirac(w - 1) - dirac(w + 1))*1i

* 关于fourier()这个指令我们看看更多的例子:

经过以上处理后,我们已经把一个PDE问题转化为ODE问题

egin{align} & quad frac{d^2}{dt^2} hat{U}(omega,t) = -omega^2 hat{U}(omega,t) \ & quad hat{U}(omega,t)|_{t=0} = pi [delta(omega +1) +delta(omega -1)],\ & quad frac{partial hat{U}}{partial u}|_{t=0} = ipi [delta(omega +1) - delta(omega -1)] end{align}

可以解得,

 quad hat{U}(omega,t) = frac{pi}{omega}i[delta(omega +1) -delta(omega -1)]sin(omega t) + pi [delta(omega +1) +delta(omega -1)]cos(omega t) \ \

代码段:

>> U = dsolve(D2U = -w^2* U,U(0) = F1, DU(0) =F2,t)

U =

(exp(-t*w*1i)*(F1*w + F2*1i))/(2*w) - (exp(t*w*1i)*(F2*1i - F1*w))/(2*w)

最后,我们把得到的解做一个傅立叶逆变换就能得到原问题的解了。很简单吧!

quad oxed{u(x,t) = cos(t-x)}

代码段:

>> syms t
>> U = (exp(-t*w*1i)*(F1*w + F2*1i))/(2*w) - (exp(t*w*1i)*(F2*1i - F1*w))/(2*w)
>> u = ifourier(U)

u =

(pi*exp(- t*1i + x*1i) + pi*exp(t*1i - x*1i))/(2*pi)

推荐阅读:

相关文章