【发布时间】:2016-04-16 22:19:56
【问题描述】:
我试图避免使用 for 循环来运行我的计算。但我不知道该怎么做。我有一个矩阵w,形状为(40,100)。每条线在t 时间内将位置保持在波浪中。例如,第一行 w[0] 是初始条件(还有 w[1],原因我将说明)。
要计算我使用的下一行元素,对于形状范围上的每个 t 和 x:
w[t+1,x] = a * w[t,x] + b * ( w[t,x-1] + w[t,x+1] ) - w[t-1,x]
其中a 和b 是一些基于方程解的常数(其实没关系),a = 2(1-r)、b=r、r=(c*(dt/dx))**2。其中c为波速,dt、dx与x和t方向上的增量有关。
有没有办法避免像这样的for循环:
for t in range(1,nt-1):
for x in range(1,nx-1):
w[t+1,x] = a * w[t,x] + b * ( w[t,x-1] + w[t,x+1] ) - w[t-1,x]
nt 和nx 是w 矩阵的形状。
【问题讨论】:
-
我建议您查看this tutorial 在 Python 中实现偏微分方程(在本例中为 Navier-Stokes)。
-
非常感谢@RolandSmith。