我已经为显式 Euler 方法制作了这段代码,但我只想绘制 0、1、25、50 次迭代,而不是全部。我该怎么做?
import numpy as np
from scipy import sparse
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
Nx = 19 # GRID POINTS on space interval
Nt = 800 # GRID POINTS on time interval
a = 0
b = 1
# ----- Spatial discretization step -----
dx = (b - a)/(Nx - 1)
t0 = 0
Tf = 1
# ----- Time step -----
dt = (Tf - t0)/(Nt - 1)
h = (b-a)/(Nx+1)
t = Tf / Nt
m = t/h**2
print("m =", m)
# ----- Creates grids -----
xspan = np.linspace(a, b, Nx)
tspan = np.linspace(t0, Tf, Nt)
# ----- Initialize matrix solution U -----
U1 = np.zeros((Nx, Nt))
# ----- Initial condition -----
U1[:,0] = np.where((xspan>=0) & (xspan<=1/2),2*xspan,2-2*xspan)
for k in range(0, Nt-1):
for i in range(1, Nx-1):
U1[i, k+1] = m*U1[i-1, k] + (1-2*m)*U1[i,k] + m*U1[i+1,k]
X1, T1 = np.meshgrid(tspan, xspan)
plt.figure(figsize=(14,10))
plt.plot(T1,U1)
plt.show()
```