How to stop my iteration Tn(j,i)=Tn+1(j,i)

1 次查看(过去 30 天)
clear clc
dx=0.5
nx=uint32(5/dx+1)
ny=uint32(5/dx+1)
[X Y]=meshgrid(linspace(0,5,nx),linspace(0,5,ny))
Tint=0
T=Tint*ones(ny,nx)
Tleft=100
Tright=0
Ttop=0
Tbottom=0
T(:,1)=Tleft
T(:,end)=Tright
T(1,:)=Ttop
T(end,:)= Tbottom
k=3
itr=200
for k=1:itr
for i=2:nx-1
for j=2:ny-1
T(j,i)=((T(j-1,i)+T(j+1,i)+T(j,i-1)+T(j,i+1))/4)
end
end
end
[Xq Yq]= meshgrid(linspace(0,5,nx*10),linspace(0,5,ny*10));
colormap jet
Vq=interp2(X,Y,T,Xq,Yq,'cubic',0);
This is my code. My iteration 200 but i want my code stop when Tn(j,i)=Tn+1(j,i) . But i dont know how to break for end...

采纳的回答

Alan Stevens
Alan Stevens 2020-8-24
编辑:Alan Stevens 2020-8-24
Replace your for loop by:
tol = 10^-6; % Or whatever is appropriate
err = 1;
while err>tol
Told = T;
for i=2:nx-1
for j=2:ny-1
T(j,i)=((T(j-1,i)+T(j+1,i)+T(j,i-1)+T(j,i+1))/4);
end
end
err = max(max(abs(T - Told)));
end

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by