为什么结束错误在我的代码中不起作用??

1视图(过去30天)
埃萨特·古尔汉
埃萨特·古尔汉 2020年8月26日
清楚的clc
L=0.02;H=40;dx=0.01;dy=dx;dt=15
nx=uint32(L/dx+1);ny=uint32(H/dy+1);rx=dt/dx^2;ry=dt/dy^2;
k=28;alfa=12.5*10^-6;g=5*10^6;Ts=30;h=45
[xy]=meshgrid(linspace(0,L,nx),linspace(0,H,ny));色调=200;T=色调*个(纽约,nx);
Tleft=0;Tright=色调;Ttop=色调;t底部=色调;
T(:,1)=T英尺;T(:,end)=Tright;T(1,:)=Ttop;T(end,:)=Tbottom;Fo=alfa*dt*(dx^2);
时间=0;n=时间/dt;
误差=1
tol=10^-1
虽然厄尔>托尔
n=n+1
Tn=T;
对于i=2:nx-1
对于j=2:ny-1
T(j,i)=Tn(j,i)+(Tn(j,i+1)+Tn(j,i-1)+Tn(j+1,i)+Tn(j+1,i)-4*Tn(j,i))+g*dx^2/k)*
T(j,end)=Fo*((g*dx^2)/k-(2*h*(Tn(j,end)-Ts)*dx)/k-2*Tn(j,end)+2*Tn(j,end-1)+Tn(j,end)/Fo)
终止
终止
误差=最大值(最大值(abs(Tn-T)))
终止
İt是一种奇怪的情况。我的代码正在工作但没有停止。我的错误小于10^-2但没有停止。
1评论
Rik
Rik 2020年8月26日
在我的Matlab副本上,它确实停止了。为了大幅提高代码的速度,我在内部循环中添加了分号。

登录以发表评论。

公认的答案

Rik
Rik 2020年8月26日
根据你现在删除的评论(“是的,当我用分号时,它起作用了。”):
循环似乎被卡住的原因是您将整个T数组打印到了命令窗口。这很快,但确实需要时间。通过在代码中添加分号来抑制输出,可以避免这种情况,从而使for循环在合理的时间内完成。
1评论
埃萨特·古尔汉
埃萨特·古尔汉 2020年8月26日
好吧,至少用分号我可以达到我的目的。反正是thanx

登录以发表评论。

更多答案(0)

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始打猎吧!