sirius_wang
2009-02-15, 02:20
部分代码如下:
for n=1:nt
up = shift('+1',u) ;
um = shift('-1',u) ;
u=u + dt/(dx*dx)*(up+um-2*u) ;
if mod(n,5) == 0
plot(x,[u' u0']);axis(rect);
legend('schema explicite','donnee initiale');
end
end
uexacte=zeros(1,nx);
for i=1:nx
for j=1:nx
uexacte(i)=uexacte(i)+u0(j)*noyau((i-j)*dx,Tfinal)*dx;
end
end
plot(x,[u' u0' uexacte']);axis(rect);
legend('schema explicite','donnee initiale','solution exacte');
title(['schema explicite ','cfl=',num2str(cfl)]);
现在运行结果最后总是只有一个最后三根线的图,for循环里的画图语句等于没用。如果我添加hold('all')可以看见所有的线但是是最后一下显示出来的,但我想能不能在for循环的时候每画一根就显示一根,然后下一根的时候自动擦掉上一根线,然后这样逐渐逼近到最后的图而不是等全部计算完一下子显示出结果。
新手上路,望指点:)谢谢!
for n=1:nt
up = shift('+1',u) ;
um = shift('-1',u) ;
u=u + dt/(dx*dx)*(up+um-2*u) ;
if mod(n,5) == 0
plot(x,[u' u0']);axis(rect);
legend('schema explicite','donnee initiale');
end
end
uexacte=zeros(1,nx);
for i=1:nx
for j=1:nx
uexacte(i)=uexacte(i)+u0(j)*noyau((i-j)*dx,Tfinal)*dx;
end
end
plot(x,[u' u0' uexacte']);axis(rect);
legend('schema explicite','donnee initiale','solution exacte');
title(['schema explicite ','cfl=',num2str(cfl)]);
现在运行结果最后总是只有一个最后三根线的图,for循环里的画图语句等于没用。如果我添加hold('all')可以看见所有的线但是是最后一下显示出来的,但我想能不能在for循环的时候每画一根就显示一根,然后下一根的时候自动擦掉上一根线,然后这样逐渐逼近到最后的图而不是等全部计算完一下子显示出结果。
新手上路,望指点:)谢谢!