% Värmeledning explicit metod
clear all
close all
T=1.0;   % t i [0,T]
N=1000;   % antal tidsrteg
dt=T/N;  % tidsteg

a=1.0;  % beräkningsområde: x i [0,a]
c=0.20; % diffusionskoefficient
b=0.4;  % stabilitskonstant enligt   (*) c dt/dx^2 = b <0.5
M= fix(a/(sqrt(c*dt/b)));  % val av M enligt M=a/dx & (*)
dx=a/M;

f=zeros(M+1,N); % f(m,n) tempuratur för x=(m-1)*dx, t=(n-1)*dt
for m=1:M       % begynnelsedata
    x=m*dx;
   if(x>0.5) f(m,1)=1; else f(m,1)=2; end
%    f(m,1)=sin((m-1)*dx*pi/a);  %begynnelsedata som ger exakt exp(-c*(pi/a)^2*t)*sin(pi/a*X'
end
for n=1:N-1
    f(1,n)=0;  % randvillkor
    f(M+1,n)=0;% 
    for m=2:M
        f(m,n+1)=f(m,n) + c*dt/(dx*dx)*(f(m+1,n)-2*f(m,n)+f(m-1,n));
    end
end
X=0:dx:M*dx;
figure(1)
plot(X,f(:,N))
figure(2)
t=(1:N)*dt;
mesh(X,t,f')
%figure(3)
%plot(X,f(:,N)-exp(-c*(pi/a)^2*T)*sin(pi/a*X'))  %felet