0

我想通过使用此脚本制作一系列曲线以使图像像视频一样:

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()

但问题是我只有第一个。有人能帮助我吗?

4

1 回答 1

0

plot返回 a 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)

此外,您的曲线在此范围内几乎相同。

于 2013-10-12T18:21:30.017 回答