如何绘制特定的迭代?

计算科学 Python 麻木的 显式方法 matplotlib
2021-12-13 23:25:38

我已经为显式 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()


```
0个回答
没有发现任何回复~