% demo_trace_diff_div : script tracé de polynômes d'interpolation pour des supports quelconques.
%
%
% ************ Fonctions auxiliaires utilisées ************
%  
%  diff_div, eval_horner
%
% *********************************************************

clear all;
choix=input('entrer les points à la main (taper m) ou en vecteur (taper v) : ','s');
if strcmp(choix,'m')
   n=input('Entrez l''entier n strictement positif (n-1 est le nombre total du point du support, en comptant les répétitions) : ');
   auxix=input('Entrez le point du support numéro 0 : ');
   auxiy=input('Entrez la valeur de la fonction en ce point : ');
   Xb(1)=auxix;
   Yb(1)=auxiy;
   X=zeros(1,n+1);
   Y=zeros(1,n+1);
   X(1)=auxix;
   Y(1)=auxiy;
   r=auxix;           
   k=0;
   for i=1:n
      auxix=input(['Entrez le point du support numéro ',int2str(i),' : ']);
      X(i+1)=auxix;
      if (X(i+1))~=r
         r=X(i+1);
         k=0; 
         Xb=[Xb auxix]; 
      else
         k=k+1;
      end
      if (k==0)
         auxiy=input('Entrez la valeur de la fonction en ce point : ');
         Y(i+1)=auxiy;
         Yb=[Yb auxiy]; 
      else
         Y(i+1)=input(['Entrez la valeur de la dérivée ',int2str(k),...
               '-ième de la fonction en ce point : ']);
      end
   end
else
   X=input('Entrez le vecteur des abscisses : ');
   Y=input('Entrez le vecteur des ordonnées : ');
   n=length(X)-1;
   Xb(1)=X(1);
   Yb(1)=Y(1);
   r=X(1);           
   for i=1:n
      auxix=X(i+1);
      if (auxix)~=r
         r=auxix;
         Xb=[Xb auxix]; 
         Yb=[Yb Y(i+1)]; 
      end
   end
end
pgra=input('Entrez le nombre de points pour le graphique : ');
a=X(1);
b=X(n+1);
xgra=a:(b-a)/pgra:b;
D=diff_div(X,Y);
ygra=eval_horner(xgra,X(1:end-1),D);
hold on;
plot(Xb,Yb,'go',xgra,ygra);
legend('Points du support','polynôme interpolateur');
title(['interpolation avec ',int2str(n+1),' points']);
hold off;




