首页 理论教育 高效解法:Matlab微分方程谱方法实现

高效解法:Matlab微分方程谱方法实现

时间:2023-10-31 理论教育 版权反馈
【摘要】:考虑如下的二维波动方程:可认为上式描述了水的波动过程,u是水面高度的分布,x、y是空间坐标,t是时间。此外,由于|x|=3处存在周期性边界条件,所以可使用谱求导矩阵计算x方向上的导数。方程式来源于文献[2],这里使用了比文献[2]更精确的方法,有兴趣的读者可以比较一下两种方法的差异。图5-24 二维波动方程的解,|x|=3边界处采用了周期性边界条件,|y|=1边界 处采用了诺依曼边界条件u/y||y|=1=0

高效解法:Matlab微分方程谱方法实现

考虑如下的二维波动方程:

978-7-111-51623-1-Part03-121.jpg

可认为上式描述了水的波动过程,u(x,y,t)是水面高度的分布,xy是空间坐标,t是时间。在|x|=3边界处采用了周期性边界条件,这代表从x=3边界流出的水将从x=-3边界流入,反之亦然。在|y|=1边界处采用了诺依曼边界条件,∂u/∂y||y|=1=0代表水不能从|y|=1处流入或流出。

由初始条件可知∂u/∂y||y|=1,t=0≈0,因此可将边界条件∂u/∂y||y|=1=0等价地写为(∂u/∂y)/∂t||y|=1=0。又由它的连续性,所以可交换求导顺序,等价写为(∂u/∂t)/∂y||y|=1=0。然后,引入函数v(x,y,t)=∂u(x,y,t)/∂t,将式(5-74)中的2/∂t2降为∂/∂t,得到:

978-7-111-51623-1-Part03-122.jpg

用ode45计算上式中的∂/∂t。此外,由于|x|=3处存在周期性边界条件,所以可使用谱求导矩阵计算x方向上的导数。对于|y|=1边界处的诺依曼边界条件,这里使用切比雪夫求导矩阵计算y方向上的导数,并根据式(5-69)处理∂v/∂y||y|=1=0。代码如下:

程序5-20

主程序代码如下:(www.xing528.com)

978-7-111-51623-1-Part03-123.jpg

978-7-111-51623-1-Part03-124.jpg

文件wave_tank.m代码如下:

978-7-111-51623-1-Part03-125.jpg

计算结果如图5-24所示,边界|y|=1像“水池壁”一样将“水”挡住。方程式(5-74)来源于文献[2],这里使用了比文献[2]更精确的方法,有兴趣的读者可以比较一下两种方法的差异。

978-7-111-51623-1-Part03-126.jpg

图5-24 二维波动方程的解,|x|=3边界处采用了周期性边界条件,|y|=1边界 处采用了诺依曼边界条件∂u/∂y||y|=1=0

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈