Я сделал код, который рассчитывает растворение жидкостей, проблема в том, что код очень плохой, поэтому я смотрел на это с NumPy, я могу оптимизировать его, но я застрял в течение нескольких часов, не зная, каквыполните следующий код, используя numpy и функцию roll.В основном у меня есть матрица, что индекс и не может быть больше 1024, для этого я использую%, чтобы вычислить, что это за индекс.Но это занимает много времени.
Я пытался использовать numpy, использовать roll, вращать матрицу, и тогда мне не нужно вычислять модуль.Но я не знаю, как воспринимать ценности соседей.
def evolve(grid, dt, D=1.0):
xmax, ymax = grid_shape
new_grid = [[0.0,] * ymax for x in range(xmax)]
for i in range(xmax):
for j in range(ymax):
grid_xx = grid[(i+1)%xmax][j] + grid[(i-1)%xmax][j] - 2.0 * grid[i][j]
grid_yy = grid[i][(j+1)%ymax] + grid[i][(j-1)%ymax] - 2.0 * grid[i][j]
new_grid[i][j] = grid[i][j] + D * (grid_xx + grid_yy) * dt
return new_grid