我正在尝试加快我的代码,目前在 Python / Numpy 中运行需要一个多小时。大部分计算时间发生在下面粘贴的函数中。
我正在尝试对 Z 进行矢量化,但我发现三重 for 循环相当困难。我可以在numpy.diff
某处实现该功能吗?看一看:
def MyFESolver(KK,D,r,Z):
global tdim
global xdim
global q1
global q2
for k in range(1,tdim):
for i in range(1,xdim-1):
for j in range (1,xdim-1):
Z[k,i,j]=Z[k-1,i,j]+r*q1*Z[k-1,i,j]*(KK-Z[k-1,i,j])+D*q2*(Z[k-1,i-1,j]-4*Z[k-1,i,j]+Z[k-1,i+1,j]+Z[k-1,i,j-1]+Z[k-1,i,j+1])
return Z
tdim = 75
xdim = 25