我需要帮助来解释如何解决以下问题:
定义二维数组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
答案 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()