function [u]=diffinies(N, max_iter = 10)
    %  parametres
    %
    %  N        : nombre d'inconnues du systeme non lineaire
    %  h        : pas d'espace
    %  u        : N-vecteur, approximation de la solution du probleme aux limites
    %  a        : N-vecteur, diagonale de la matrice jacobienne A,
    %             puis diagonale de L tq A=LL^T
    %  c        : (N-1)-vecteur, sous-diagonale de la matrice jacobienne A,
    %             puis sous-diagonale de L tq A=LL^T
    %  b        : N-vecteur, second membre du systeme lineaire A y = b,
    %             puis solution du systeme lineaire A y = b
    %
    h = 1 / (N + 1);
    coeff = (N + 1)^2;
    %
    % initialisation : u^0
    %
    for i = 1 : N
      u(i) = 1.;
    end
    
    %
    % algorithme de Newton : DF(u^n) ( u^n-u^{n+1} ) = F(u^n), c'est-a-dire
    %                        A y = b, puis u^{n+1} = u^n - y
    %
    for n = 1 : max_iter
    %
    % remplir la matrice jacobienne A = DF(u^n) et le second membre b = F(u^n)
    %
        for i = 1 : N
          a(i) = ???;
        end
        for i = 1 : N - 1
          c(i) = ???;
        end
        b(1) = ???;
        for i = 2 : N - 1
          b(i) = ???;
        end
        b(N) = ???;
    %
    % decomposition de cholesky A = LL^T
    %
    a(1)=sqrt(a(1));
    for i = 1 : N-1
      c(i) = ???/???;
      a(i+1) = ???;
    end
    %
    % resolution du systeme lineaire Lz = b */
    %
    b(1) = b(1)/a(1);
    for i= 1 : N - 1
        b(i+1) = ???;
    end
    %
    % resolution du systeme lineaire L^T y = z */
    %
    b(N) = b(N) / a(N);
    for i = N - 1 : -1 : 1
        b(i) = ???;
        end
    %
    % poser u^{n+1} = u^n - y, imprimer la norme euclidienne de y et l'erreur max.
    %
    norm2 = 0;
    err = 0;
    for i = 1 : N
        u(i) = u(i) - b(i);
        norm2 = norm2 + b(i) * b(i);
        erri = abs(u(i) - uex(i*h));
        if (erri>err) 
            err = erri;
    end
  end
  
  fprintf(' iteration %d norm2 %e err %e \n',n,norm2,err)
end
end
%
% definition de la fonction f
%
function [second_membre] = f(x)
    second_membre = ???;
end 
%
% definition de la solution du probleme aux limites (calcul de l'erreur)
%
function [u_exact] = uex(x)
    u_exact = ???;
end
