function [x] = newtsys(N, max_iter = 1000)
%
% Methode de Newton : Etant donne x^n, trouver x^{n+1} 
% tel que DF(x^n)(x^n - x^{n+1}) = F(x^n)
% En pratique on construit A=DF(x^n), b=F(x^n)
% on resoud Ay=b et on pose x^{n+1}=x^n-y
%
% parametres
% ------------------------------------------------------
%  N        : nombre d inconnues du systeme non lineaire
%  x        : N-vecteur, contient x^n puis x^{n+1}

    x = ones(N,1);

    stop = 1;
    iter = 0;
    while stop>1e-10 && iter < max_iter
        iter = iter + 1;
        
        A = jacobian(x);
        b = func(x);

        y = ???; 
        x = ???;

        stop = norm(y) / norm(x);
        fprintf('iter=%i, stop = %e \n',iter,stop)
    end
end

function [df] = jacobian(x)
    N = length(x);
    df = zeros(N,N); 
    
    df(1,1) = 2 + exp(x(1));
    df(1,2) = -1;
    df(N,N) = 2 + exp(x(N));
    df(N,N-1) = -1;
    
    for i = 2 : N-1
        df(i,i) = ???;
        df(i, i-1) = ???;
        df(i, i+1) = ???;
    end
    
end


function [FF] = func(x)
    N = length(x);
    FF = zeros(N,1); 
    
    FF(1) = 2*x(1) + exp(x(1)) - x(2);
    FF(N) = 2*x(N) + exp(x(N)) - x(N-1);
    for i = 2 : N-1
        FF(i) = ???;
    end
    
end

[x] = newtsys(10)


function [x] = newtcorde(N, max_iter = 1000)
%
% Methode de Newton-Corde : Etant donne x^n, trouver x^{n+1} 
% tel que DF(x^0)(x^n - x^{n+1}) = F(x^n)
% En pratique on construit A=DF(x^0), b=F(x^n)
% on resoud Ay=b et on pose x^{n+1}=x^n-y
%
% parametres
% ------------------------------------------------------
%  N        : nombre d inconnues du systeme non lineaire
%  x        : N-vecteur, contient x^n puis x^{n+1}

    x = ones(N,1);

    stop = 1;
    iter = 0;
    
    ???
end

[x] = newtcorde(10)