% ------------------------------------
% FrSe 2009
% MLAN4, Schluss
% Newton-Raphson
% Anwendug der Jacobi-Matrix
% -------------------------------------
% diese Funktion ruft
% die Funktion f2(x) = rhs
% und Jacobi2 = System-Matrix
% gelöst wird dann A x = b
% wobei x der korrektur delta_x entspricht
% Beispiel aus Roy Black
% --------------------------------------------

clear all

eps = 1e-16;        % verlangte Genauigkeit
Kmax = 30;          % max anzahl Wiederholungen
%x = [0.6;0.5];      % Startvektor
x = [0.6;0.25]; 
delta = 2*eps;
k = 0;
norm_delta = [];
S = [];
Kond = [];
while delta > eps && k < Kmax
    x0 = x;
    J = Jacobi3(x0);        %Jacobi2(x0);
    D = eig(J);
    S = [S, max(abs(real(D)))/min(abs(real(D)))];
    Kond = [Kond, cond(J)];
    delta_x = J\f2(x0);
    x = x0 - delta_x;
    delta = norm(delta_x);
    norm_delta = [norm_delta delta];
    k = k + 1;
end

figure(1)
hold off
semilogy(1:k, norm_delta, 'r.-')
ylabel('2-Norm von delta\_x')
xlabel(['Anzahl Wiederholungen: Genauigkeit eps = ', num2str(eps)])
title('Newton-Raphson mit Hilfe der Jacobi-Matrix')
grid

norm_delta

figure(2)
hold off
plot(1:k, S, 'm.-')
hold on
plot(1:k, Kond, 'c.-')
legend('Steifheit von J', 'Kondition von J')
grid