我試圖避免使用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