semeng 发表于 2008-5-21 19:58

如何替换while

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
   
=meshgrid(0:dx:1,0:dy:1);
figure(1)
contourf(XI,YI,T_new,30);
caxis();
colorbar('vert')
title('Temp Distribution at S-S')
% 不行用while,怎么替换谢谢

sigma665 发表于 2008-5-21 20:40

回复 楼主 的帖子

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

不用while是什么意思,用if?

semeng 发表于 2008-5-21 20:43

用if 和循环搞定
不用while
另外那个eps是应该换一下,免得机器混淆

sogooda 发表于 2008-5-22 09:34

不用while?为啥呢?以这段程序来看,用while最合适了啊。
要不就像3楼说的,用一个循环和一个选择代替。for ...
if ... break; end
...
end

semeng 发表于 2008-5-22 09:51

楼上不要给思路,还是直接改正过来,最好已运行就能出结果的
我比较懒的

wwbeyondww 发表于 2008-5-22 10:13

懒还那么有理由?
本来在这种情况下用while比for+if好很多,
为啥楼上要因为你懒除了给你思路还要去写一段自己本来不愿意接受的code给你?

sigma665 发表于 2008-5-22 10:36

回复 5楼 的帖子

我也比较懒:@L
页: [1]
查看完整版本: 如何替换while