Посмотрев на другие решения с этим кодом ошибки, я не смог найти решение этой ошибки. Все переменные очищаются в моем командном окне, поэтому у меня нет никаких помех. После ввода >> part2a (1.0,0.5,0.1,0.05) я получаю сообщение об ошибке. Я предполагаю, что продолжаю идти, что другие части будут иметь те же проблемы.Индекс сообщения об ошибке превышает размеры матрицы
Индекс превышает размеры матрицы.
Ошибка в part2a (строка 12) y1 (j + 1) = y (j) + h1. * X;
function part2a(h1,h2,h3,h4)
t=0;
tf=10;
n1=(tf-t)/h1;
n2=(tf-t)/h2;
n3=(tf-t)/h3;
n4=(tf-t)/h4;
y=0;
x=(7.2*(sin(t))^2)-(0.208333*(1+y)^1.5);
for j=1:n1
t(j+1)=t(j)+h1;
y1(j+1)=y(j)+h1.*x;
end
for j=1:n2
t(j+1)=t(j)+h2;
y2(j+1)=y(j)+h2*x;
end
for j=1:n3
t(j+1)=t(j)+h3;
y3(j+1)=y(j)+h3*x;
end
for j=1:n4
t(j+1)=t(j)+h4;
y4(j+1)=y(j)+h4*x;
end
t1=0:h1:10;
t2=0:h2:10;
t3=0:h3:10;
t4=0:h4:10;
plot(t1,y1,t2,y2,t3,y3,t4,y4);
xlabel('Time in days');
ylabel('Change in depth of the tank in meters');
end
Как бы вы рекомендовать мне это исправить? Я попытался сменить y на нули (n4), и у меня появилось сообщение об ошибке, которое говорит о несоответствии размеров подзапросов. –
@ B.Lott Зависит от того, что делает ваша программа и что означает 'y'. Если вы хотите использовать значение 0 для каждого 'y', просто измените' y (j) 'на' y'. – Marcin
В этом случае y = 0 является начальным условием для первой итерации метода Эйлера. Я хочу, чтобы каждый y после этого заменил тот, который был до него в уравнении. –