// Interpolation polynomiale
// On remarque que les oscillations augmentent avec le degré du polynome

funcprot(0); // pour ne pas indiquer une redéfinition des fonctions

// Plus simple, mais pour un degré fixé du polynome
if %F then
ax=(0:4)';
ay=[0;0;1;0;0];

A = [ax.^0, ax, ax.^2, ax.^3, ax.^4];

// Coefficient du polynome passant par les 5 points défini par ax, ay
coef = A\ay;

pol = inv_coeff(coef');  // pol est le polynome de coefficient  coef

deff('y=fc4(x)', strcat(['y=', strsubst(pol2str(pol), '^', '.^')]));  // fonction correspondant au polynome

xdel();
drawlater();
x=-0.2:0.02:4.2;
plot(x, fc4(x));

plot(ax, ay, 'LineStyle', 'none', 'Marker', 'o');
mygca=gca();
mygca.zoom_box = [-0.5, -0.8, 4.5, 1.5];
mygcf=gcf();
mygcf.figure_position = [820, 1];
mygcf.figure_size = [700, 600];
drawnow();
end

// Interpolation par un polynome de degré arbitraire.
// A partir de 10, la précision des calculs n'est plus suffisante
nMax=6;
ax=(0:nMax)';
ay=zeros(nMax+1, 1);
ay(1+floor(nMax/2)) = 1;

A = ones(ax);
for ii=1:nMax;  A = [A, ax.^ii]; end;

// Coefficient du polynome passant par les 5 points défini par ax, ay
coef = A\ay;

pol = inv_coeff(coef');  // pol est le polynome de coefficient  coef

deff('y=fct(x)', strcat(['y=', strsubst(pol2str(pol), '^', '.^')]));  // fonction correspondant au polynome

xdel(); // efface la fenêtre graphique
drawlater();
x=-0.1:0.02:(nMax+0.1);
plot(x, fct(x));

plot(ax, ay, 'LineStyle', 'none', 'Marker', 'o');
mygca=gca();
mygca.zoom_box = [-0.5, -2, (nMax + 0.5), 1.5];
mygcf=gcf();
mygcf.figure_position = [820, 1];
mygcf.figure_size = [700, 600];
drawnow();
