// convection: schémas décentrés amont/aval
//clear; close,
//da=gda(); da.auto_clear='on';

V=1;	// vitesse de convection
T=1;	// temps final
cfl=0.75;

//N=[20,40,80,160]';	// Nb de point de discretisation
N=[750,1500,3000,6000]';	// Nb de point de discretisation
erreur=zeros(N);
for i=1:size(N,'r')
	dx=1/N(i);
	dt=cfl*dx/V;
	x=linspace(0,1,N(i)+1);

	// Initial condition
	u0=sin(%pi*x)';
//	u0=double(x<0.5)'; 

	u=u0;
	//plot(x,u);
	for t=dt:dt:T,
		//v=(1+cfl)*u-cfl*[u(2:N(i)+1);u(2)]; // decentrement aval
		v=(1-cfl)*u+cfl*[u(N(i));u(1:N(i))]; // decentrement amont
		u=v;
	//	plot2d(x,u);
	end;

	plot2d(x',[u u0]);
scf
//	erreur(i)=sqrt(((u-u0)'*(u-u0)-(u(1)-u0(1))^2)*dx);
	erreur(i)=sqrt((u-u0)'*(u-u0)*dx);
	//erreur(i)=(norm(u-u0,1)-abs(u(1)-u0(1)))*dx;
end;
dN=ones(size(N,'r'),1)./N;
dN12=ones(size(N,'r'),1)./(N.^0.5);
dN14=ones(size(N,'r'),1)./(N.^0.25);
title('erreur L2');
//plot2d(N,[erreur dN dN12 dN14],logflag='ll');
plot2d(N,[erreur dN],logflag='ll');
scf
plot2d(N,[erreur dN12],logflag='ll');
scf
plot2d(N,[erreur dN14],logflag='ll');
scf
plot2d(N,[erreur dN12 dN14],logflag='ll');
