【问题标题】:I am not sure how to implement my 2D array which is我不确定如何实现我的二维数组
【发布时间】:2019-02-20 15:48:44
【问题描述】:

所以我试图在 Python 中将以下等式实现为二维数组:

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-”时,绘图功能将不起作用,这只适用于第一个图,这就是为什么我认为我做了一些事情实现数组时出错。

我只是不确定如何绘制二维数组,需要一些帮助。

就上下文而言,这是我尝试在 Python 中建模的汽车跟随模型。其中 u0 是前车,u1 是下一辆车,以此类推。 j 是第 n 个司机检查前面的车在做什么的时间步长。 u0 的函数是前车的行为,这就是为了弄清楚后车的行为所需要的。

【问题讨论】:

    标签: python arrays matplotlib multidimensional-array plot


    【解决方案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()
    

    这给了我:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多