作业十一WaveCollision2D(matplotlib)
作业
Gauss-Seildel方法
许晗 2013301020084
前言
波的运动与之前我们计算的问题有一点不同, 它是与时间有关的. 这里我研究的是理想情况(无摩擦, 完全柔性)波运动方程的数值模拟. 完成课本第6.6题, 展示了两个在2维平面上运动的波包的速度和形状在碰撞前后不变.
注:
正文
计算方法
与课本上156页到157页类似的讨论可以得到二维的波动方程:
由于此时(1)式含时, 我们就不能完全套用用Chapter5解拉普拉斯方程的方法.
但是也类似: 设
i,j就相当于格点, n就相当于计算步数. 与Laplace方程的数值解类似有:
上式中时间(步数)相关的项就有后一步(n+1),当前(n),前一步(n-1), 将后一步整理到(2)式一边:
为了计算简便把令
, 计算范围是
, 其中
结果展示
两个高斯波包Z1和Z2, 相应参数:
, 时间间隔为, 则.
- 单个波(.PNG)
- 两个波碰撞(.GIF)
结论
- 可以看出理想波动情况, 波包碰撞时叠加, 但在碰撞前后速度,振幅等性质不发生改变, 在边界发生反射.
除此之外还有一些发现和猜想
- 在时, 计算就不稳定, 而不是书上那样高阶项忽略. 可能的原因有?
- 在方盒子里的反射不像一维那样可以很快回到初始状态.(t=0.01s)
- 也可以用来研究波的衍射,
- 例如在范围加上板子(的条件).
即, 单缝衍射(a=0.1m). 可以清楚看到右半边的出射波是球面波
- 双缝衍射(d=0.09m).
- 也可以把(1yz)面的强度最大值随y的变化收集起来得到衍射强度随角度变化的图像
附录
一维的波动可以参考刘文焘的作业