Теперь вот код, с которым я работаю:
import numpy
from matplotlib import pyplot as plt
import time, sys
nx = 41
dx = 2 / (nx-1)
nt = 25
dt = 0.025
c = 1
fig = plt.figure()
u = numpy.ones(nx)
u[int(.5 / dx):int(1 / dx + 1)] = 2
print(u)
un = numpy.ones(nx)
for n in range(nt):
un = u.copy()
plt.plot(numpy.linspace(0, 2, nx), u)
for i in range(1, nx):
u[i] = un[i] - c*dt/dx * (un[i] - un[i - 1])
plt.show()
Это должно оживить решение уравнения ∂u / ∂t + c * ∂u / ∂x = 0; но я не знаю, как его оживить - потому что в текущем состоянии он сразу показывает функцию на всех временных шагах; и если вместо этого я помещу plt.show()
внутри l oop (внешнего), он показывает графики по одному, и мне нужно закрыть окно графика, чтобы увидеть следующее, что не очень удобно.