我试图避免使用for循环来运行我的计算。但我不知道该怎么做。我有一个矩阵w
形状(40,100)
。每条线在t
时间内持有波浪位置。例如,第一行w[0]
是初始条件(因为我将显示的原因,也是w[1]
)。优化嵌套for循环
要计算下一行的元素我用,为每一位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
矩阵的形状。
我会建议你看看[本教程(https://开头github上。com/barbagroup/CFDPython)用于在Python中实现偏微分方程(在本例中为Navier-Stokes)。 –
非常感谢@RolandSmith。 – Lin