matlab程序无法运行,提示越界,请问如何调试?
clearallformatbankro1=2600;c1=1150;k1=3.0;ro2=600;c2=200;k2=0.2;T0=300;T=1500;h=500;r...
clear all
format bank
ro1=2600;c1=1150;k1=3.0;
ro2=600;c2=200;k2=0.2;
T0=300;T=1500;h=500;
r1=0.025;r2=0.05;r3=0.1;n=25;n1=n+1;n2=(r3-r1)/(r2-r1)*n+1;
detr=(r2-r1)/n;dett=0.2;
M1=ro1*c1*detr^2/k1/dett;
M2=ro2*c2*detr^2/k2/dett;
for i=1:1:n2
x(i,1)=T0;
end
for t=1:1:1000
for i=1:1:n2
if i==1 %上层边界
x(i,t+1)=2*(x(i+1,t)-x(i,t))/M1+2*h*detr*(T-x(i,t))/k1/M1+x(i,t);
elseif i>1&&i<n1 %上层内部
x(i,t+1)=(x(i-1,t)+x(i+1,t))/M1+(1-2/M1)*x(i,t);
elseif i==n1 %上下层边界处
x(i,t+1)=x(i,t)+2*((x(i-1,t)-x(i,t)/k2+(x(i+1,t)-x(i,t))/k1))/(M1/k2+M2/k1);
elseif i>n1&&i<n2 %下层内部
x(i,t+1)=(x(i-1,t)+x(i+1,t))/M2+(1-2/M2)*x(i,t);
elseif i==n2 %下层边界
x(i,t+1)=x(i,t)+2*(x(i-1,t)-x(i,t))/M2;
end
end
end
然后显示??? Attempted to access x(77,1); index out of bounds because size(x)=[76,2]. 但是我觉得i不可能算到77,为什么这么显示呢 展开
format bank
ro1=2600;c1=1150;k1=3.0;
ro2=600;c2=200;k2=0.2;
T0=300;T=1500;h=500;
r1=0.025;r2=0.05;r3=0.1;n=25;n1=n+1;n2=(r3-r1)/(r2-r1)*n+1;
detr=(r2-r1)/n;dett=0.2;
M1=ro1*c1*detr^2/k1/dett;
M2=ro2*c2*detr^2/k2/dett;
for i=1:1:n2
x(i,1)=T0;
end
for t=1:1:1000
for i=1:1:n2
if i==1 %上层边界
x(i,t+1)=2*(x(i+1,t)-x(i,t))/M1+2*h*detr*(T-x(i,t))/k1/M1+x(i,t);
elseif i>1&&i<n1 %上层内部
x(i,t+1)=(x(i-1,t)+x(i+1,t))/M1+(1-2/M1)*x(i,t);
elseif i==n1 %上下层边界处
x(i,t+1)=x(i,t)+2*((x(i-1,t)-x(i,t)/k2+(x(i+1,t)-x(i,t))/k1))/(M1/k2+M2/k1);
elseif i>n1&&i<n2 %下层内部
x(i,t+1)=(x(i-1,t)+x(i+1,t))/M2+(1-2/M2)*x(i,t);
elseif i==n2 %下层边界
x(i,t+1)=x(i,t)+2*(x(i-1,t)-x(i,t))/M2;
end
end
end
然后显示??? Attempted to access x(77,1); index out of bounds because size(x)=[76,2]. 但是我觉得i不可能算到77,为什么这么显示呢 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询