登录论坛

查看完整版本 : [MATLAB基础] 请教一个while循环的问题


黑黝黝
2010-08-14, 00:44
for i=1:179;
b=i/180*pi;
x(i)=b;
err=subs(err);
while err>10^-4
p=1/2*(pmin+pmax);
d1=1/3*pi*p^3*(1-cos(b))^2*(2+cos(b))/(sin(b))^3;
d2=g*(1-k)*pi*p^2 ;
err=abs((d1+d2)-d)/d;
if (d1+d2)>d
pmax=p;
else
pmin=p;
end
end
y(i)=p;
end
以上是循环部分的内容,我想得到随着i的递增取值~while循环中每一个对应i值的p值~
把这些p值写到一个矩阵中~然后用在后边的计算中~
现在的问题是~y(i)中的p值全都被同一次循环的值取代了~不知什么原因~
请高手指点~~ 以下是全部循环:



a=110/180*pi
syms b
syms p
c=72.75*10^-3
d=1*10^-12
e=24*10^-6
f=32*10^-6
g=40*10^-6
h=1+4*g*(f-e)/f^2
k=(1-e/f)^2
pmax=solve(g*(1-k)*pi*p^2-d,p)
pmax=pmax(1,:)
pmax=subs(pmax)
pmin=0
p=1/2*(pmin+pmax)
d1=1/3*pi*p^3*(1-cos(b))^2*(2+cos(b))/(sin(b))^3
d2=g*(1-k)*pi.*p^2
err=abs((d1+d2)-d)/d
for i=1:1:179;
b=i/180*pi;
x(i)=b;
err=subs(err);
while err>10^-4
p=1/2*(pmin+pmax);
d1=1/3*pi*p^3*(1-cos(b))^2*(2+cos(b))/(sin(b))^3;
d2=g*(1-k)*pi*p^2 ;
err=abs((d1+d2)-d)/d;
if (d1+d2)>d
pmax=p;
else
pmin=p;
end
end
y(i)=p;
end