所以我试图将以下等式实现为Python中的2D数组:
u[i][j+1] = u[i][j] + dt*l*(u[i-1][j] - u[i][j]).
这是我要做的代码:
l = 0.3
n = 3
m = 100
dt = 3.0
T = 30
A = 20
t = np.arange(0, 100, 0.1)
def u0(A, t, T):
return (A/2)*(1 + np.sin((2*np.pi*t)/T))
u = np.zeros((n, m))
for j in range(m):
u[0][j] = u0(A,dt*j,T)
for i in range(0, n):
u[i][0] = 10
for i in range(1,n):
for j in range(m-1):
u[i][j+1] = u[i][j] + dt*l*(u[i-1][j] - u[i][j])
u01 = (A/2)*(1 + np.sin((2*np.pi*t)/T))
for i in range(1, n):
for j in range(m - 1):
plt.plot(t, u01, 'g-')
plt.plot((j), u[1][j+1], c = 'r', marker = '_')
plt.plot((j), u[2][j+1], c = 'b', marker = '_')
每当我尝试使最后两个图的标记为“ r-”或“ b-”时,plot函数将不起作用,这仅适用于第一个图,因此这就是为什么我认为我做了一些事情实现数组时出错。
我只是不确定如何绘制2D数组,并希望获得帮助。
对于上下文,这是一个我要在Python中建模的汽车跟随模型。其中u0是领头车,u1是下一个,依此类推。j是第n个驾驶员检查以查看他们前面的车在做什么的时间步长。 u0的函数是引导车的行为,而这就是找出后续车的行为所需要的全部。