傅立叶变换(Fourier Transform)求解积分方程与PDE
本编文章探讨一下数学物理方法中一个常见的问题,即如何用傅立叶变换得到PDE或者积分方程的解。在文章的最后,会附上MATLAB的实现代码。学疏才浅,欢迎大家指点!
1. 什么是傅立叶变换?
- 从数学形式上来看,FT的表示在各个领域有著细微的差别。
(*本文遵循以下的定义)
- 从直观意义上来说,是将现有收集到的时域信号转换到频域,从而更有效的进行分析。
更详细的入门介绍可以看这里:
Heinrich:傅里叶分析之掐死教程(完整版)更新于2014.06.06
还有斯坦福EE的公开课(EM的教授吐槽过某一章内容 0. 0)时间充裕的话,了解一下。
EE261 - The Fourier Transform and its Applications2. 傅立叶变换解决这类问题的优势和缺点分别是什么?
优势:可以处理全平面上的问题, 与拉普拉斯变换不同的是不要求时间 。
可以将关于空间的多次偏微分直接操作出来,而关于时间的偏微分化为常微分。
3. 什么样的PDE可以这么解决?
个人的观点是,局限于线性PDE。
4. 具体的例子:一维波动方程
考虑作对于x的傅立叶变换:
接著我们对等式两边做傅立叶变换
从这里我们可以看到FT的优势是如何体现出来的:
将关于空间的多次偏微分直接操作了出来,而关于时间的偏微分化为常微分。
当然我们也必须把边界条件作傅立叶变换。
代码段:
>> 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问题。
可以解得,
代码段:
>> 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)
最后,我们把得到的解做一个傅立叶逆变换就能得到原问题的解了。很简单吧!
代码段:
>> 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)
推荐阅读: