Я написал код rungekutta, и существует определенный диапазон x, который должен рассчитываться до него.Проблема в том, что проф.хочет код, который продолжает добавлять самостоятельно, пока не достигнет требуемого ответа.
Я пытался использовать функцию 'if', но она работает только один раз и не более (таким образом, даже создавая несоответствие длины массива.
Код:
h=0.5;% step size
z=0.5;
x = 0:h:z;% the range of x
y = zeros(1,length(x));
y(1) = 50;% initial condition
F_xy = @(t,x) (37.5-3.5*x);%function
for i=1:(length(x)-1)% calculation loop
k_1 = F_xy(x(i),y(i));
k_2 = F_xy(x(i)+h,y(i)+h*k_1);
y(i+1) = y(i) + (h/2)*(k_1+k_2);% main equation
if y(i+1)>11
x=0:h:z+1;
end
end
disp (y(i+1))
Ошибка длины массива (показывает, что если функция работает только один раз)
41.4063
Error using plot
Vectors must be the same length.
Error in code6rungekutta2ndorder (line 30)
plot(x,y), grid on
, то она должна увеличиваться на +1 в переменной 'z', пока ответ y (i + 1) не станет меньше 11. (правильное значение z должно быть 9,5)