why am I getting this error ? "Index exceeds array bounds."

h=1; c=0.1; k=0.1; m=1;
y(1)=0; z(1)=0; t(1)=0;
g=@(t,y,z) 1-(c*z)-(k*y);
f=@(t,y,z) (m*z);
for i=1:10
t(i+1)=t(i)+h;
k1=f(t(i),y(i),z(i));
l1=g(t(i),y(i),z(i));
k2=f(t(i)+(h*0.5),y(i)+(k1*0.5*h),z(i)+(l1*0.5*h));
l2=g(t(i)+(h*0.5),y(i)+(k1*0.5*h),z(i)+(l1*0.5*h));
k3=f(t(i)+(h*0.5),y(i)+(k2*0.5*h),z(i)+(l2*0.5*h));
l3=g(t(i)+(h*0.5),y(i)+(k2*0.5*h),z(i)+(l2*0.5*h));
k4=f(t(i)+h,y(i)+(k3*h),z(i)+(l3*h));
y(i+1)=y(i)+(k1+2*k2+2*k3+k4)*h/6;
end
plot(t,y)

 采纳的回答

Becuase size of t ,y and z is one but you are trying to accessing the elements from 1 to 10 via loop!

3 个评论

More t and y values are stored as you go along, but you do not store more z values so you run out of those.
Bullseye sir Walter thank you very much?
Thank you for your explanations. Walter's answer worked.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by