function u = heat_imp(u0,D,dt,n)
% function u = heat_imp(u0,D,dt,n)

nx = length(u0);
x = linspace(-1,1,nx);
dx = max(diff(x));

a = dt/(4*dx^2);
A = zeros(nx,nx);
A = A + (1 + 2*a)*eye(nx);
for i = 2:nx-1
   A(i,i-1) = -a;
   A(i,i+1) = -a;
end
A(1,1) = 1;
A(nx,nx) = 1;

A1 = inv(A);
u(:,1) = u0';

for i = 1:n
   u(:,i+1) = A1*u(:,i);
end

return
   
   
