% Labuppgift 1, värmeledning i platta

m=20;
h=1/(m+1);
n=2*m+1;
x=(0:h:2);
y=(0:h:1);
[X,Y]=meshgrid(x,y);        % Skapar koordinatsytemet på plattan

% Skapa matris
e=ones(m*n,1);
e1=ones(m*n,1);
for d=1:41
e1(m*d+1)=0;                % Förskjut radvärdena
end
e1=e1(1:m*n);               % Trimma längden

e2=ones(m*n,1);
for d=1:41
e2(m*d)=0;
end

A=spdiags([-e -e2 4*e -e1 -e],[-m -1 0 1 m],m*n,m*n);

% Skapa kolonvektor med randtemperaturer
R=zeros([1,820]);
R(1)=120;
R(2:19)=100;
for i=1:40
    R(20*i)=60;
    R(20*i+1)=20;
end
R(20)=160;
R(800)=60;
R(801)=100;
R(802:819)=80;
R(820)=140;

T=A\R';

Z=reshape(T,m,n);

% Ordna randtemperaturer
a=ones(20,1); a=80.*a;
b=ones(42,1); b=20.*b;
c=ones(21,1); c=100.*c;
d=ones(43,1); d=60.*d;

Z=[Z a];                       % Tillägg av randtemp på matrisen
Z=[b'; Z];
Z=[c Z];
Z=[Z; d'];

v=[20 30 40 50 60 70 80 90];   % Vektor med isotermer

figure(1)
surf(X,Y,Z)

figure(2)
[Z,s]=contour(Z,v);
clabel(Z,s,v)

figure(3)
spy(A,'o')