//
//  programme 1
//
write(%io(2),'programme 1: interpolation de la fonction 1/(1+x^2)')
write(%io(2),'entre -5 et 5 (phenomene de Runge).')
n=evstr(x_dialog('nombre de points d''interpolation (equirepartis)?','13'))
//
deff('y=f(x)','y=1/(1+x^2)');
a=-5;h=10/n;
//
// calcul des diffrences divisees
//
for j=1:n+1
 d(j)=f(a+(j-1)*h);
end;
b(1)=d(1);
for k=1:n
  for j=1:n+1-k
    d(j)=(d(j+1)-d(j))/(k*h);
  end
  b(k+1)=d(1);
end
//
// construction du polynome d'interpolation
// par la methode de Horner
//
deff('y=p(x)',['y=b(n+1);for k=n:-1:1';
    'y=b(k)+(x-a-(k-1)*h)*y;end']);
//
// trace des resultats
//
x=-5:0.1:5;
xbasc()
fplot2d(x,p,1,'121');
fplot2d(x,f,2,'000');
fplot2d(-5:h:5,f,-2,'000');
