// convection: schéma de Lax-Wendroff clear; close, da=gda(); da.auto_clear='on'; V=1; // vitesse de convection T=1; // temps final cfl=0.5; a=0;b=1; function y=u0(x) y=double(x<0.5); endfunction N=[20,40,80,160,500]; // Nb de point de discretisation erreur=[]; for n=N dx=1/n; dt=cfl*dx/V; x=linspace(a,b,n+1); u=u0(x)'; for t=dt:dt:T, u=(1-cfl^2)*u-0.5*(cfl-cfl^2)*[u(2:n+1);u(2)]+0.5*(cfl+cfl^2)*[u(n);u(1:n)]; // Law Wendroff //plot2d(x,u); end; uexact=u0(x)'; // solution periodique // plot2d(x,[u uexact]); erreur=[erreur,sqrt(((u-uexact)'*(u-uexact)-(u(1)-uexact(1))^2)*dx)]; end; Dx38=ones(N)./(N^(3/8)); plot2d(N,[erreur',Dx38'],logflag='ll');