Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-04-28, 21:03   #1
whxgj
初级会员
 
注册日期: 2008-04-28
年龄: 42
帖子: 2
声望力: 0
whxgj 正向着好的方向发展
问题 请帮忙看下这个程序为什么跳不出WHILE循环??

while(F>0)
b=m;
m=(a+b)/2;
omegam0=(1-m)*omegas/pairs; %omegam0重新赋值
vib02; %重新计算振动机参数
Tcapture=m0*r0^2*omegam0^2*abs(Wc);
Te01=Pe1*S0/(1+Tst1*S0^2);
Te02=Pe2*S0/(1+Tst2*S0^2);
Tdifference=abs(Te01-Te02-(f1-f2)*omegam0-m0*r0^2*omegam0^2*(Ws1-Ws2));
a1=[Te01-Te02-(f1-f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1-eta*Ws2)/(2*pairs^2)]/(Pm*(1-S0)^2*Wc/(2*pairs^2));
alpha1=asin(a1)-thetac; %2*alpha
F=Te01+Te02-(f1+f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1+eta*Ws2+2*Ws*sin(alpha1+thetas))/(2*pairs^2);%F(alpha,omegam0)
if abs(F)<delta
disp(' “Succeed: the values of 2alpha and omegm0 ”')
return
end
end
whxgj 当前离线   回复时引用此帖
旧 2008-04-28, 22:09   #2
fanxing39
高级会员
 
注册日期: 2007-12-02
年龄: 44
帖子: 303
声望力: 31
fanxing39 是一位成功的新星fanxing39 是一位成功的新星fanxing39 是一位成功的新星fanxing39 是一位成功的新星
默认

请把完整程序发上来吧,看这一个片段,不容易找出问题
fanxing39 当前离线   回复时引用此帖
旧 2008-04-29, 10:01   #3
whxgj
初级会员
 
注册日期: 2008-04-28
年龄: 42
帖子: 2
声望力: 0
whxgj 正向着好的方向发展
默认

vib01; %电机参数 与omegam0无关
vib02; %振动机参数与omegam0有关其值改变时要重新调用
Tcapture=m0*r0^2*omegam0^2*abs(Wc); %俘获力矩
S0=Se1;
Te01=Pe1*S0/(1+Tst1*S0^2);
Te02=Pe2*S0/(1+Tst2*S0^2);
Tdifference=abs(Te01-Te02-(f1-f2)*omegam0-m0*r0^2*omegam0^2*(Ws1-Ws2));%剩余力矩
if Tcapture-Tdifference<0
disp('Can not realize the frequency capture')
return
end
a1=[Te01-Te02-(f1-f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1-eta*Ws2)/(2*pairs^2)]/(Pm*(1-S0)^2*Wc/(2*pairs^2));
alpha1=asin(a1)-thetac; %2*alpha
F=Te01+Te02-(f1+f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1+eta*Ws2+2*Ws*sin(alpha1+thetas))/(2*pairs^2);%F(alpha,omegam0)
if F<0
disp('The power of the two motors is not enough to drive the vibrating system.')
return
end
delta=0.01;
a=0;
b=Se1;
m=(a+b)/2;
omegam0=(1-m)*omegas/pairs; %omegam0重新赋值
vib02; %重新计算振动机参数
Tcapture=m0*r0^2*omegam0^2*abs(Wc);
Te01=Pe1*S0/(1+Tst1*S0^2);
Te02=Pe2*S0/(1+Tst2*S0^2);
Tdifference=abs(Te01-Te02-(f1-f2)*omegam0-m0*r0^2*omegam0^2*(Ws1-Ws2));
a1=[Te01-Te02-(f1-f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1-eta*Ws2)/(2*pairs^2)]/(Pm*(1-S0)^2*Wc/(2*pairs^2));
alpha1=asin(a1)-thetac; %2*alpha
F=Te01+Te02-(f1+f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1+eta*Ws2+2*Ws*sin(alpha1+thetas))/(2*pairs^2);
if abs(F)<delta
disp(' “Succeed: the values of 2alpha and omegm0 ”')
return
end
while (F<0)
a=m;
m=(a+b)/2;
omegam0=(1-m)*omegas/pairs; %omegam0重新赋值
vib02; %重新计算振动机参数
Tcapture=m0*r0^2*omegam0^2*abs(Wc);
Te01=Pe1*S0/(1+Tst1*S0^2);
Te02=Pe2*S0/(1+Tst2*S0^2);
Tdifference=abs(Te01-Te02-(f1-f2)*omegam0-m0*r0^2*omegam0^2*(Ws1-Ws2));
a1=[Te01-Te02-(f1-f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1-eta*Ws2)/(2*pairs^2)]/(Pm*(1-S0)^2*Wc/(2*pairs^2));
alpha1=asin(a1)-thetac; %2*alpha
F=Te01+Te02-(f1+f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1+eta*Ws2+2*Ws*sin(alpha1+thetas))/(2*pairs^2);%F(alpha,omegam0)
if abs(F)<delta
disp(' “Succeed: the values of 2alpha and omegm0 ”')
break;
end
end
while(F>0)
b=m;
m=(a+b)/2;
omegam0=(1-m)*omegas/pairs; %omegam0重新赋值
vib02; %重新计算振动机参数
Tcapture=m0*r0^2*omegam0^2*abs(Wc);
Te01=Pe1*S0/(1+Tst1*S0^2);
Te02=Pe2*S0/(1+Tst2*S0^2);
Tdifference=abs(Te01-Te02-(f1-f2)*omegam0-m0*r0^2*omegam0^2*(Ws1-Ws2));
a1=[Te01-Te02-(f1-f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1-eta*Ws2)/(2*pairs^2)]/(Pm*(1-S0)^2*Wc/(2*pairs^2));
alpha1=asin(a1)-thetac; %2*alpha
F=Te01+Te02-(f1+f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1+eta*Ws2+2*Ws*sin(alpha1+thetas))/(2*pairs^2);%F(alpha,omegam0)
if abs(F)<delta
disp(' “Succeed: the values of 2alpha and omegm0 ”')
break;
end
end
whxgj 当前离线   回复时引用此帖
回复

主题工具
显示模式

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

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


相似的主题
主题 主题作者 版面 回复 最后发表
[求助]怎么在matlab中导入大量不同名字(没有规律)的.mat数据文件? maizi816 MATLAB论坛 5 2008-06-29 09:57
【求助】关于Demos里的一个程序! firefly MATLAB论坛 0 2007-06-13 19:55


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


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