Python 第19行,in<;模块>;u[i+;1]=u[i]-c*dt/dx*(u[i]-n[i-1])类型错误:';int';对象不可下标

Python 第19行,in<;模块>;u[i+;1]=u[i]-c*dt/dx*(u[i]-n[i-1])类型错误:';int';对象不可下标,python,numpy,typeerror,Python,Numpy,Typeerror,当我运行这段代码时,会显示一个名为第19行的错误,在u[i+1]=u[i]-c*dt/dx*(u[i]-n[i-1])类型错误:“int”对象是不可下标的 import numpy as np # load numpy as np import matplotlib.pyplot as plt c=1 n=51 dx=2/(n-1) t_final=60 dt=0.1 u=np.ones(n) u[int(.5 / dx):int(1 / dx + 1)]

当我运行这段代码时,会显示一个名为第19行的错误,在u[i+1]=u[i]-c*dt/dx*(u[i]-n[i-1])类型错误:“int”对象是不可下标的

import numpy as np                    # load numpy as np
import matplotlib.pyplot as plt
c=1
n=51
dx=2/(n-1)
t_final=60
dt=0.1
u=np.ones(n)
u[int(.5 / dx):int(1 / dx + 1)] = 2
print(u)
x=np.linspace(0,2,n)
print(x)
t=np.arange(0,t_final,dt)

for j in range(len(t)):
    for i in range(1,n-1):
        u[i+1] = u[i] - c * dt / dx * (u[i] - n[i-1])
    u[0]=1
    u[n-1]=1
plt.figure(1)
plt.plot(x,u)
plt.axis([0,2,0,2])
plt.show()

这是因为
n
不是数组。你的意思是
u[i-1]

这里n是一个整数,因为它似乎在范围函数中起作用,并且定义为等于51!所以n[i-1]是无效的,因为n是一个整数
n[i-1]