@wudawufanfan
2016-12-16T17:03:47.000000Z
字数 1017
阅读 495
未分类
在此输入正文
from matplotlib import animationfrom pylab import*import numpy as npc=300.0dx=0.01dt=0.01t=0.0y=[]l=np.linspace(0,1,100)#x-axisy0=np.exp(-1000*(l-0.3)**2)#y-axis it's a wave package locates at x=0.3y0_2=np.exp(-1000*(l-0.7)**2)+np.exp(-700*(l-0.7)**2)def w():global t,dty.append(y0_2)y.append(y0_2)while t<100.0:y_next=np.zeros(100)for i in range(1,98):y_next[i]=-y[-2][i]+y[-1][i+1]+y[-1][i-1]y.append(y_next)t=t+dtreturn y, t#print w()[0] ,w()[1]def w2():global t,dty.append(y0)y.append(y0)while t<100.0:y_next=np.zeros(100)for i in range(1,98):if i<50:y_next[i]=-y[-2][i]+y[-1][i+1]+y[-1][i-1]else:y_next[i]=2*(1-0.5)*y[-1][i]-y[-2][i]+0.5*(y[-1][i+1]+y[-1][i-1])y.append(y_next)t=t+dtreturn y, t#print w()[0] ,w()[1]a=w()[0]a=w()[0]f=figure()ax=axes(xlim=(0,1),ylim=(-1.2,1.2))line, =ax.plot([],[],lw=2)def animate(i):line.set_data(l,a[i])return line,def init():line.set_data([],[])return line,anim=animation.FuncAnimation(f,animate,init_func=init,frames=200,interval=50,blit=True)#frames mean zhenshu,interval mean each frame last how longshow()