声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1064|回复: 6

[编程技巧] 如何替换while

[复制链接]
发表于 2008-5-21 19:58 | 显示全部楼层 |阅读模式

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

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

x
n=10; % the number of the mesh
h=10; % the heat transfer coefficient
k=1;
dx=1/n;
dy=1/n;
T_old=zeros(n+1,n+1)+500;
T_new=T_old;
eps=1;
iter=0;
while (eps>0.001)
    iter=iter+1;
    for j=2:n
       i=1;
       T_new(i,j)=1/(2*(h*dx/k+2))*(2*T_old(i+1,j)+T_new(i,j-1)+T_old(i,j+1)+2*h*dx/k*300);
    end
   
    for i=2:n
        for j=2:n
            T_new(i,j)=1/4*(T_old(i+1,j)+T_old(i,j+1)+T_new(i-1,j)+T_new(i,j-1));
        end
    end
   
    ErrorTOT=T_old-T_new;
    eps=max(max(ErrorTOT));
    T_old=T_new;
end
   
[XI YI]=meshgrid(0:dx:1,0:dy:1);
figure(1)
contourf(XI,YI,T_new,30);
caxis([300 500]);
colorbar('vert')
title('Temp Distribution at S-S')
% 不行用while,怎么替换谢谢
回复
分享到:

使用道具 举报

发表于 2008-5-21 20:40 | 显示全部楼层

回复 楼主 的帖子

eps最好换个
matlab里eps有特定的指代

不用while是什么意思,用if?
 楼主| 发表于 2008-5-21 20:43 | 显示全部楼层
用if 和循环搞定
不用while
另外那个eps是应该换一下,免得机器混淆
发表于 2008-5-22 09:34 | 显示全部楼层
不用while?为啥呢?以这段程序来看,用while最合适了啊。
要不就像3楼说的,用一个循环和一个选择代替。
  1. for ...
  2. if ... break; end
  3. ...
  4. end
复制代码
 楼主| 发表于 2008-5-22 09:51 | 显示全部楼层
楼上不要给思路,还是直接改正过来,最好已运行就能出结果的
我比较懒的
发表于 2008-5-22 10:13 | 显示全部楼层
懒还那么有理由?
本来在这种情况下用while比for+if好很多,
为啥楼上要因为你懒除了给你思路还要去写一段自己本来不愿意接受的code给你?
发表于 2008-5-22 10:36 | 显示全部楼层

回复 5楼 的帖子

我也比较懒:@L
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-29 04:19 , Processed in 0.056515 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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