Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2010-08-14, 00:44   #1
黑黝黝
初级会员
 
注册日期: 2010-08-14
年龄: 39
帖子: 1
声望力: 0
黑黝黝 正向着好的方向发展
默认 请教一个while循环的问题

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

此帖于 2010-08-14 00:49 被 黑黝黝 编辑。
黑黝黝 当前离线   回复时引用此帖
 

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 13:14


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.