    % Metoda Newtona ________________________________________________


    % Oblicza pierwiastek równania f(x) = 0 metodą Newtona.
    %
    % Argumenty:
    %     f: funkcja f(x).
    %     df: pochodna funkcji f(x).
    %     x0: punkt startowy (początkowe rozwiązanie).
    %     tol: dokładność (tolerancja).
    %     iter_max: maksymalna liczba wykonywanych iteracji.
    %     _________________________________________________________  

    % Wczytanie argumentów _________________________________________
    clc; clear
    
    %f = @(x) (1+x)*exp(-x^2)-2*atan(x^2);
    %df = @(x) (-2*x^2-2*x+1)*exp(-x^2)-4*x/(1+x^4);
    %x0 = 0,5;


    %f = @(x) 2 - exp(x);
    %syms f(x);
    %f(x) = 2 - exp(x);
    %df = diff(f,x);
    %x0 = 0;                                   
    
    f = @(x) exp(x) - 1.5 - atan(x);
    df = @(x) exp(x) - 1/(1+x^2);
    x0 = -10;


    tol = 1e-8;
    iter_max = 20;                                  
    
    %Method______________________________________________________________

    x = x0;
    fx = f(x);
    dfx = df(x);
    Tab(1,:) = [0, x, fx];    %dla prezentacji wyników.
    
    for i = 1:iter_max
        
        x = x - fx/dfx;
        fx = f(x);
        dfx = df(x);
    
        Tab(i+1,:) = [i, x, fx];    %dla prezentacji wyników.
    
        if ((abs(x-x0) <= tol && abs(fx) <= tol) || dfx == 0)
            break;
        end

        x0 = x;
    
    end

    % Prezentacja wyników _______________________________________________
    fprintf('%3s %11s %11s \n','itr','x','f(x)');
    fprintf('---------------------------\n');
    fprintf('%3.0f %11.8g %11.8g \n',Tab');
    fprintf('---------------------------\n');
    fprintf('x = %11.5g\n',x);

