%Aufgabe 4 a

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

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

exakt = A\q;

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

c = [];

D = diag(diag(A));
U = -triu(A,1);
L = -tril(A,-1);
Dinv = inv(D);
Dinvq = Dinv * q;
DinvUL = Dinv * (U+L);

hold on;

i = 0;
ytest = 2 + tol; %um auf jeden fall einen schlaufendurchdang zu haben

while norm(ytest,inf)>(1 + tol);

 y = Dinvq + DinvUL * y;

 [n, l] = size(c);
 if l == 0;
  c = tol;
  l = 1;
 end;

 cakt = norm((y - exakt),inf)/c(l);
 c = [c, cakt];

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

 ytest = norm(ytest,inf) - norm(y,inf);

end;

hold off;

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

[n, rate] = size(c);
