% Matlabskript skrevet i fellesskap med klassen 19/1/06
% Implementerer Eulers metode for S/R problemet av
% varmeledningsligningen. Starverdien u(x,0)=f(x) er en hattfunksjon
% f(x)=1-abs(2*x-1), randverdiene er 0.


M=51;       % Antall ukjente i rom
h=1/(M+1);  % romskritt
r=.49;       % r=k/h^2, merk at en må ha r<=0.5
k=r*h*h;    % tidsskrittet setter fra verdi av r
Nsteps=50;  % Antall tidsskritt
e=ones(M,1); % kolonnevektor av 1'ere
A=spdiags([r*e (1-2*r)*e r*e],-1:1,M,M);  % Lag glissen (sparse) matrise
X=(0:M+1)'*h; % diskretisering av x-aksen
V0=1-abs(2*X-1); % Startverdi
V0=sin(pi*X)+0.2*sin(10*pi*X);
plot(X,V0);
ax=axis;  % lagre akse-verdier for seinere bruk
pause     % trykk enter for å fortsette
U0=V0(2:end-1); % Kun de indre punktene (se bort fra randen)
U=U0;
for n=1:Nsteps,
    U=A*U;
    plot(X,[0;U;0]);  % Fyll inn randpunkter
    axis(ax);         % sett aksene slik de var i starten
    drawnow
    pause
end
