声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1354|回复: 2

[综合讨论] 为什么不能退出while循环

[复制链接]
发表于 2009-10-20 21:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我想请问一下为什么我的程序中while不起作用,不能在条件不满足时退出循环呢?谢谢了
a(1)=3.5; a(2)=2.5; a(3)=2;
e(1)=3; e(2)=3.01; e(3)=3.02;
p(1)=2.4301e-005; p(2)=4.7365e-004; p(3)= 0.0014;
cp(1)=4.4935e-004; cp(2)=9.2635e-004;
ca(1)=-0.5; ca(2)=-0.5;
ce(1)=0.01; ce(2)=0.02;
w=1; n=1;
c(1)=5.5300e-005; d(1)= 0.0477;

t1=c(n), t2=d(n), t3=p(n)
while  t3<0.97%sqrt(t1.^2+t2.^2)>=0.00000001%循环控制条件
   
c(n)=(-cp(n)*ce(n+1)+ce(n)*cp(n+1))/(ca(n+1)*ce(n)-ca(n)*ce(n+1));
d(n)=-(cp(n+1)*ca(n)-ca(n+1)*cp(n))/(ca(n+1)*ce(n)-ca(n)*ce(n+1));

cr=sqrt(ca(n).^2+ce(n).^2);
q=sqrt(c(n).^2+d(n).^2);%q为cos中分母的公共部分
cosm=c(n)/q; cosn=d(n)/q;
ca(n+2)=cr*cosm; ce(n+2)=cr*cosn;

a(n+3)=a(n+2)+ca(n+2);
e(n+3)=e(n+2)+ce(n+2);
f1=a(n+3);
p(n+3)=exp(-0.5*(a(n+3).^2+e(n+3).^2));
g1=p(n+3);

cp(n+2)=p(n+3)-p(n+2)

n=n+1;
if n>20,break,end
end
disp(n)
disp(p)
我感觉当结果有不满足while条件的却不能退出循环,这是为什么呢,请各位帮忙,谢谢了

[ 本帖最后由 ChaChing 于 2009-10-20 22:07 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-10-20 22:17 | 显示全部楼层
个人水平/时间有限, 仅直接跑下LZ程式, 当n>20可以退出循环!
直觉t3<0.97 logic有问题, 因永远为真!

还有a(1)=3.5; a(2)=2.5; a(3)=2;可以 a=[3.5,2.5,2]; ...

评分

1

查看全部评分

 楼主| 发表于 2009-10-21 09:10 | 显示全部楼层
谢谢了,就是你说的那个地方,我太粗心了阿
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-26 03:38 , Processed in 0.050445 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表