function [x, n] = newton(f, f1, x1)
%NEWTON Newton-Raphson Verfahren zur Nullstellenbestimmung
%   [x, n] = newton_raphson(f, f1, x1)
%   f  Funktion deren Nullstelle bestimmt werden soll
%   f1 erste Ableitung, = df/dx
%   x1 angenommene Nährung der Nullstelle

% Copyright (c) 2016 DHBW Mannheim
x = x1;
d = 1.0;
tol = 1e-15;
n = 0; nmax = 100;
while d >= tol && n <= nmax
    n = n + 1;
    if f1(x) == 0
        warning('Ableitung ist Null; keine Verbesserung möglich.')
        break
    end
    x_neu = x - f(x)/f1(x);
    d = abs(x - x_neu);
    x = x_neu;
end

if n > nmax
    warning('Newton Verfahren vielleicht nicht konvergent.')
end

end
