Я буду использовать эту простую самодостаточную функцию, которая должна получать в качестве входных данных: начальную позицию, силу, шаг по времени и количество итераций;и вернуть в качестве выходных данных: векторы времени и положения.
function [time,pos] = example(pos0, force, N, dt)
clc;
pos = zeros(N+1,3);
vel = zeros(N,3);
pos(1,:)=pos0;
for i = 1:N
time(i+1) = i*dt;
% solver finds the velocities given forces and previous positions
vel(i,:) = force./(norm(pos(i,:)+1));
% evolution calculates new positions using new velocities
pos(i+1,:) = pos(i,:) + vel(i,:)*dt;
end
end
Как можно ускорить цикл for, учитывая, что параллельное вычисление не является опцией (записи цикла зависят от предыдущей итерации)?Будет ли векторизация вариант?Как бы я пошел по этому поводу?