
function [a]=DD(x,y)
//  Calcule les differences divisees pour le  
// polynome de Lagrange
[nligne,n]=size(y)
F=y
for k=2:n
G=F;
for  j=k:n
     F(j)=(G(j)-G(j-1))/(x(j)-x(j-(k-1)));
end;
end;
a=F,
// endfunction
///////////////////////////////////////////



function [val]=Horner(X,a,t)
// calcule a(1)+a(2)(t-X(1))+a(3)(t-X(1))(t-X(2)) + 
//  ... + a(n)(t-X(1))...(t-X(n-1))
   
[nligne,n]=size(a)
v=a(n)
for  k=n-1:-1:1
     v=a(k) + (t-X(k))*v;
end;
val=v 

// endfunction
///////////////////////////////////////////



function [ab,or]=TraceLagrange(x,y)
//  Calcule les points neccessaires pour tracer   
// le polynome de Lagrange
[nligne,n]=size(y)
a=DD(x,y)
numpoint=100
xpoint=linspace(x(1),x(n),numpoint)
ypoint=xpoint
for j=1:numpoint
ypoint(j)=Horner(x,a,xpoint(j))
end,
ab=xpoint
or=ypoint

// endfunction
///////////////////////////////////////////
