我想制作一系列曲线,使用此脚本将图像视为视频:
from pylab import *
a = 1
L = 3.0
T = 1
dx = 1e-3
dt = 1e-2
NX = int(ceil(L/dx))
NT = int(ceil(T/dt))
X = np.linspace(-L,L, NX)
U0 = 1./sqrt(2*np.pi)*np.exp(-X**2/2)
Un = U0
Unext = zeros(NX)
line, = plot(X,U0)
show()
for n in range(NT):
Unext[1:-2] = 1./2*(Un[2:-1]+Un[0:-3])
Unext[1:-2] += -a*dt/2*dx*(Un[2:-1]+Un[0:-3])
Un = Unext
line.set_ydata(Un)
draw()
但问题是我只有第一个。有人可以帮助我吗?
答案 0 :(得分:0)
plot
返回Line2D
,您每次通过循环更新y数据。如果您想查看所有曲线,请每次循环调用plot:
for n in range(NT):
Unext[1:-2] = 1./2*(Un[2:-1]+Un[0:-3])
Unext[1:-2] += -a*dt/2*dx*(Un[2:-1]+Un[0:-3])
Un = Unext
plot(X, Un)
draw()
如果您尝试假动画,则需要添加pause
,以便查看每个更新的行:
for n in range(NT):
Unext[1:-2] = 1./2*(Un[2:-1]+Un[0:-3])
Unext[1:-2] += -a*dt/2*dx*(Un[2:-1]+Un[0:-3])
Un = Unext
line.set_ydata(Un)
draw()
plt.pause(.1)
此外,您的曲线在此范围内几乎相同。