function val=point_fixe(x0,nom_g,n_max)
% produit un vecteur d'itérés d'une valeur initiale par une fonction g
%
% variable d'entrée
% x0 est la valeur initiale choisie;
% nom_g l'expression de la fonction donnée
% sous la forme d'une chaine 'g(x)';
% n_max est un entier naturel donnant la longueur du vecteur des itérés.
%
% variables de sortie
% val est le vecteur des itérés de x0 par g de longueur n_max.

% On pourra tester cette fonction en tapant en fenetre de commande
% point_fixe(2,'(60*x-36-6*x^2)^(1/4)',20).

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%              Fonctions appelées                                                                    *
%                                                  
%                                           
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% spécifications
format long e;


x=x0;val(1)=x;
for i=1:n_max-1
    x=eval(nom_g);
    val(i+1)=x;val;
end

ch=input('Voulez-vous afficher les résultats? (Si oui, taper 1)','s');
if str2num(ch)==1
    % à modifier selon l'impression souhaitée
    nb_lig=3;
    
    s=[];
    for i=1:size(val,2)
        s=[s sprintf('ptf%2.0f = %12.10f   ',i,val(i))];
        % pourrait etre remplacé par un calibrage en fonction
        % de nul_seuil du type cal=-log10(2*nul_seuil)
        % à passer après transformation chaine à la place de 12.10f.
        if (rem(i,nb_lig)==0)|(i==size(val,2))
            disp(s);sprintf('\n');
            s=[];
        end
    end
end

% fin de point_fixe
    
