Я пытаюсь имитировать распределение тепла на бесконечной плите с течением времени. Для этого я написал сценарий Scilab. Теперь, решающий момент его, является расчет температуры во всех точках пластины, и это должно быть сделано для каждого экземпляра раз, когда я хочу заметить:Как выполнить операцию для всех матричных элементов в Scilab?
for j=2:S-1
for i=2:S-1
heat(i, j) = tcoeff*10000*(plate(i-1,j) + plate(i+1,j) - 4*plate(i,j) + plate(i, j-1) + plate(i, j+1)) + plate(i,j);
end;
end
Проблема заключается в том, что, если бы я хотел сделать это для пластины 100х100 точек, это означает, что здесь (это только для внутренней части, без граничных условий), мне пришлось бы зацикливать 98х98 = 9604 раза, на каждом повороте рассчитывать тепло при заданной точке i,j
. Если я хотел бы заметить, что, скажем, 100 secons, с шагом в 1 секунду, я должен повторить его 100 раз, давая в общей сложности 960 400 итераций. Это занимает довольно много времени, и я хотел бы избежать этого. Плата размером до 50x50, все это происходит в разумный, 4-5 секунд.
Теперь мой вопрос - нужно ли все это сделать с помощью for
петель? Есть ли встроенная функция агрегата в Scilab, которая позволит мне сделать это для всех элементов матрицы? Причина, по которой я еще не нашел пути, заключается в том, что результат для каждой точки зависит от значений других матричных точек, и это заставляло меня делать это с вложенными циклами. Любые идеи о том, как сделать это быстрее оценены.
Да, это, конечно, достаточно быстро. Удивительный ответ, спасибо! –