登录论坛

查看完整版本 : [求助]一个小程序老是出错。


jesse81
2008-12-01, 23:35
老是显示??? Index exceeds matrix dimensions.
是不是数组加减出错了?

clc;clear all

Z(1:100)=0.000014;
%不同层内Z方向厚度
P(1:100)=2E5;
%不同层树脂压力
V(1:100)=0.4;
%不同层内纤维体积含量
M(1:100)=0;
%不同层内树脂流出量
Pa=2E5;
%初始外压力
t=100;
%加压时间
Ea=82.9E10;
%增强材料模量
B=215;
%长径比
V0=0.4;
%初始平均纤维体检含量
Z0=0.000014;
%初始每一层厚度
P(1)=0
%最外层树脂所受压力
for i=1:1:10*t
u=1+exp(i/10);%粘度随时间变化情况
for j=2:1:100
K=((3.53E-9)*exp(-V(j)/0.05))+(5.46E-16);
M(j)=((K/u)*(P(j)-P(j-1))*0.001);
Z(j)=Z(j)-M(j)+M(j+1);
V(j)=V0*Z0/Z(j);
Pf=(3*pi*Ea/(B^4))*((V(j)/0.4)-1)/(0.907/V(j)-1)^4;
P(j)=Pa-Pf;
end
end

zhyanchao
2008-12-02, 12:06
Z(j)=Z(j)-M(j)+M(j+1); 在j=100时M(j+1)超出了矩阵的大小。
另外你这个循环有问题,这个循环只能看到i=1000是的结果。应该在最后一个end前加个你要观看的矩阵,不要加分号。

debateshang
2008-12-03, 01:00
你可以将M(1:100)=0;变为M(1:101)=0;
不过运行了你的结果,感觉你的变法可能有问题,M最后结果太小了

jesse81
2008-12-08, 23:56
非常感谢2楼和3楼,m改成101,这个问题我已经解决。
另外,我只想得到最后的值,就是t*10时候相应的Z和V
另外,理论上M应该是趋近于0的一个数,非常感谢3楼的提醒。实际上,这也是我需要模拟的一个效果