为python定义和绘制二维数组

时间:2017-10-09 04:15:58

标签: python arrays multidimensional-array

我需要帮助来解释如何解决以下问题:

  

定义二维数组u(x,t)

     

1.spatial domain:x:[0º,360º],选择dx = 5

     

2.时间域:t:[0s,120s],选择dt = 0.5s

     

3.初始条件:当t = 0时,u(x,t = 0)= sin(2x)

我尝试做下面的事情。我知道这是错的,但我至少开始得到我必须做的事情了吗?任何帮助将不胜感激。

import numpy as np 
import matplotlib.pyplot as plt 
t=(121)
x=(361)
u=(x,t)
dt=0.5
dx=5

arr = []
for i in range(360):
    u(x,t=0)= np.sin(np.radians(360)*2)

for j in range (120):
    u(x,t(n+1)*dt)=u(x,t=n*dt)+3*dt

1 个答案:

答案 0 :(得分:0)

Numpy以简单的方式处理矩阵,在您的情况下,主要错误是您必须在使用之前创建矩阵。一种可能的解决方案如下:

import numpy as np
import matplotlib.pyplot as plt 

dt = 0.5
dx = 5

x = np.arange(0, 360+dx, dx)
t = np.arange(0, 120+dt, dt)

u_x = np.zeros((t.shape[0], x.shape[0]))
u_x[0] = np.sin(np.radians(2*x))

for i in range(len(t)-1):
    u_x[i+1] = u_x[i] + 3*dt

ts = [0, 1, 10, 60, 120]

for tx in [0, 1, 10, 60, 120]:
    plt.plot(u_x[int(tx/dt)], label="t={}seg".format(tx))
plt.legend()

plt.show()

enter image description here