Я пытаюсь запустить этот цикл for (работает в Matlab), и каждый раз, когда цикл запускается, вместо следующей итерации с новыми значениями скорости и положения он просто сбрасывается к начальным условиям, которые были заданы доцикл for.Как я могу это исправить?На каждой итерации я хочу, чтобы цикл принимал вновь рассчитанную позицию, а значение скорости брало из последней строки матрицы «S», которую выводит решатель ODE.
%Initial position and velocity
spart = [0.05 0.05 0.];
vpart = [-1.7585E+7 -1.7585E+7 0.];
%The entire time span MUST contain an even amount of indices for program to work!
tstep = 0.1E-8; %Defining time step
tfin = 0.7E-8; %Defining final time
intspan = [0:tstep:tfin]; %Total time span
[introw,intcol] = size(intspan);
Wfor = zeros((3*(intcol)/2),6); %Generates matrix of zeros that the trajectory solver will populate later
index = [0:1:intcol/2-1];
for t = 0:1:intcol-2
%Assigns the numerical values of position and velocity to the following variables
x = spart(1);
y = spart(2);
z = spart(3);
vx = vpart(1);
vy = vpart(2);
vz = vpart(3);
icv = [x; y; z; vx; vy; vz];
%Time span
tspan = [intspan(t+1) ((intspan(t+2)-intspan(t+1))/2)+intspan(t+1) intspan(t+2)];
[T,S] = ode15s(@bdipuniodefun, tspan, icv);
[rownum,colnum] = size(S);
Wfor((1+2*t):(3+2*t),(1:6)) = S;
%Assigns the new velocity and position from the final row of the S matrix
vparts(1) = S(rownum,4);
vparts(2) = S(rownum,5);
vparts(3) = S(rownum,6);
sparts(1) = S(rownum,1);
sparts(2) = S(rownum,2);
sparts(3) = S(rownum,3);
end