% u'_t+cu'_x=0 advekciós egyenlet numerikus megoldása periodikus peremmel,
% Lax-Friedrichs

% Modellparaméterek
c=1;
tmax=2.5;
L=1; % [0,L] intervallumon oldjuk meg a feladatot
u0=@(x)sin(2*pi*x);

% Diszkretizáció paraméterei

r=0.8; %(=c*dt/dx, CFL-konstans)
n=60;
dx=L/n;
dt=r*dx/c;
kmax=floor(tmax/dt);
x=dx:dx:L;

% Iterációs mátrix

A=gallery('tridiag',n,1/2+r/2,0,1/2-r/2);
A(1,n)=1/2+r/2; A(n,1)=1/2-r/2;

% Kezdeti feltétel és ábrázolása

u=u0(x)';
plot([0:dx:L],[u(n),u']);
title(['t= ',num2str(0)])
pause

for k=1:kmax
u=A*u;
% plot([0:dx:L],[u(n),u'],[0:dx:L],[u0(L-k*dt),u0(x-(k*dt))],c*mod(k,L/(c*dt))*dt,0,'ro');
% %axis([0,L,-5,5])
% legend('Numerikus megoldás','Pontos megoldás')
% title(['t= ',num2str(k*dt)])
% pause(0.1*r)
end

plot([0:dx:L],[u(n),u'],[0:dx:L],[u0(L-k*dt),u0(x-(k*dt))],c*mod(k,L/(c*dt))*dt,0,'ro');
