%Aufgabe 4 a
%

function rate = gaussseidel(fun,n) %funktion, stützstellen

[A,q,x] = heat(fun,n);

y = zeros(n,1); %startwert
tol = 10^-4; %toleranzwert
zeichnen = 50; %alle x mal wird der graph gezeichnet

c = [];

D = diag(diag(A));
U = -triu(A,1);
L = -tril(A,-1);
DLinv = inv(D-L);
DLinvq = DLinv * q;
DLinvU = DLinv * U;

hold on;

cakt = 2 + tol;

i = 0;

while cakt>(1 + tol);

yalt = norm(y,inf);
if yalt == 0;
yalt = tol;
end;

y = DLinvq + DLinvU * y;

cakt = norm(y,inf)/yalt;
c = [c, cakt];

if i == 0;
plot(x,y);
drawnow;
i = zeichnen;
end;
i = i - 1;
end;

hold off;

title(fun);
xlabel('Quelle');
ylabel('Temperatur');

[n, rate] = size(c);