Здесь происходит несколько вещей
Вам не нужно указывать полное имя импортируемых пакетов. Вы можете просто использовать псевдонимы для вызова этих пакетов и использовать их с этими псевдонимами позже. Это, к примеру.
import numpy as np
Ваша инициализация значения dx даст вам 0, потому что вы делите 2 на 40, что даст вам ноль. Вы можете инициализировать значение dx, сделав одно из значений в этом выражении плавающим, так что-то вроде этого.
dx=float(2)/(nx-1) #width between space intervals
Как и в законе Меуколма в комментариях, предложенных в комментариях, добавьте pyplot.show (), чтобы показать график. Это то, что отредактированная версия вашего кода понравится
import numpy as np
import matplotlib.pyplot as plt
import time,sys
#specifying parameters
nx=41 # number of space steps
nt=25 #number of time steps
dt=0.025 #width between time intervals
dx=float(2)/(nx-1) #width between space intervals
c=1 # the speed of the initial wave
#boundary conditions
u = np.ones(nx)
u[int(0.5/dx):int(1/(dx+1))] = 2
un = np.ones(nx)
#initializing the velocity function
for i in range(nt):
un= u.copy()
for i in range(1,nx):
u[i]= un[i] -c*(dt/dx)*(u[i]-u[i-1])
plt.xlabel('Position')
plt.ylabel('Velocity')
plt.plot(np.linspace(0,2,nx),u)
plt.show()