Array indices must be positive integers or logical values.
4 次查看(过去 30 天)
显示 更早的评论
tFinal = 2;
N = 33;
h=tFinal/N;
t=linspace(0,tFinal,N+1);
y=zeros(1,N+1);
yExact=9./(3*t-1+10*exp(t*-3));
y(0) = 1;
for n=1:N
y(n+1) = y(n) + h * y(n)*(3-t(n)*y(n));
end
plot(t,y,'-'); xlabel('t'); ylabel('y'); title('2nd Part') ;
hold all
plot(t,yExact,'bx');
error100= abs(y(N+1)-yExact(N+1));
fprintf('The error of N equaling 33 is %f.\n',error100);
Array indices must be positive integers or logical values.
1 个评论
Walter Roberson
2019-10-4
Shubham Gupta is correct: 0 is not a permitted index. You need to add 1 to every index operation of y that you have.
y(0+1) = 1;
y(n+1+1) = y(n+1) + h * y(n+1)*(3-t(n)*y(n+1));
... You will find, by the way, that you fail to assign a value to what was y(1) in your notation.
采纳的回答
Shubham Gupta
2019-10-4
编辑:Shubham Gupta
2019-10-4
y(0) = 1; % y(i) = k; i must be a natural number
Not allowed in MATLAB.
Instead write
y(1) = 1;
2 个评论
Walter Roberson
2019-10-4
If you start n at 2, then the loop will access y(n) which is y(2) but y(2) has not been assigned.
What the user probably wants is to start n at 1 like it is now.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!