Je cherche à accélérer mon code qui prend actuellement un peu plus d'une heure pour s'exécuter en Python / Numpy. La majeure partie du temps de calcul se produit dans la fonction ci-dessous.
Je tente de vectoriser Z, mais je trouve cela plutôt difficile pour une triple boucle for. Pourrais-je éventuellement implémenter la fonction numpy.diff
quelque part? Jetez un oeil:
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