[关闭]
@XF 2016-12-18T16:04:42.000000Z 字数 1290 阅读 137

第十三次作业

作业


一、背景

关于波动,我们有波动方程:


正文
习题6.6
齐次线性偏微分方程的一个重要特征是有限个解的线性组合也是方程的解。由此,在弦上运动的两个波包的运动是独立的。为了说明这一点,我们在弦上的x=0.3m,0.7m处各施加一个峰值不同的高斯型扰动,观察之后波包的运动。
代码:

  1. import division
  2. from matplotlib import animation
  3. import matplotlib.pyplot as plt
  4. import numpy as np
  5. from copy import deepcopy
  6. fig = plt.figure()
  7. ax = fig.add_subplot(1,1,1,xlim=(0,1),ylim=(-1,1))
  8. line, = ax.plot([],[],lw=2)
  9. def init():
  10. x = np.linspace(0,1,101)
  11. y = np.exp(-1000*(x-0.3)**2) + 0.5*np.exp(-1000*(x-0.7)**2)
  12. y[0] = 0
  13. y[-1] = 0
  14. line.set_data(x,y)
  15. return line,
  16. def iteration(num):
  17. x = np.linspace(0,1,101)
  18. y_now = np.exp(-1000*(x-0.3)**2) + 0.5*np.exp(-1000*(x-0.7)**2)
  19. y_now[0] = 0
  20. y_now[-1] = 0
  21. y_before = deepcopy(y_now)
  22. y_after = np.zeros(101)
  23. for j in range(num):
  24. for i in range(101):
  25. if i== 0 or i== 100:
  26. y_after[i] = 0
  27. else:
  28. y_after[i] = - y_before[i] + y_now[i+1] + y_now[i-1]
  29. y_before = deepcopy(y_now)
  30. y_now = deepcopy(y_after)
  31. return y_now
  32. def animate(i):
  33. x = np.linspace(0,1,101)
  34. y = iteration(i)
  35. line.set_data(x,y)
  36. return line,
  37. anim1=animation.FuncAnimation(fig, animate, init_func=init, frames=200, interval=5)
  38. plt.xlabel('x(m)')
  39. plt.ylabel('y(m)')
  40. plt.title('wave on a string')
  41. plt.grid(True)
  42. plt.show()


由图可知,各个波之间没有相互干扰,其在“碰撞”前后的形状和速度均没有变化。由此可知,这几个波作为弦的运动的解,是相互独立的。

初始波形不同时弦的振动情况
接下来我们考察当初始波形不同时弦上的波的传播情况。
当初始的波为x=0.4~0.6上的方波时,情况为:

当初始的波为三角波时,情况为:

当初始的波为上半圆时,情况为:

致谢
感谢《计算物理》第六章,感谢吴雨桥同学。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注