我不确定如何实现我的2D数组

时间:2019-02-20 15:48:44

标签: python arrays matplotlib multidimensional-array plot

所以我试图将以下等式实现为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的函数是引导车的行为,而这就是找出后续车的行为所需要的全部。

1 个答案:

答案 0 :(得分:1)

如果将c='r'更改为c='r-',则matplotlib会尝试将r-解释为一种颜色,这就是为什么会出现错误的原因。

我不能100%确定您想要的结果,但我认为您可以通过定义j=np.arange(m-1)来完全删除绘图循环:

# The rest of your code remains the same

j = np.arange(m-1)

plt.plot(t, u01, 'g-')
plt.plot(j, u[1][j + 1], 'r-')
plt.plot(j, u[2][j + 1], 'b-')

plt.show()

哪个给我:

enter image description here