Bonjour,
J'ai réalisé un programme utilisant l'interpolation de Lagrange pour approximer une fonction.
Cependant mes coefs L(j) sont infiniment grand et je ne comprend pas pourquoi, pourtant la formule est correcte à mon cours.
J'ai emprunter et lu beaucoup de livre sur le sujet et j'ai essayer de m'en inspirer.
Bien-sur si je réécrit le programme du livre, ça fonctionne mais mon but est de réaliser moi même le programme pour comprendre et m'entrainer.
Je joint ci-dessous mon programme MATLAB
Pouvez-vous m'aider ou m'indiquer où se trouve mon erreur ?
Cordialement
Merci d'avance
%Interpolation de Lagrange
clear
clc
min=input('Entrez l''abscisse minimale de la fonction: ');
max=input('Entrez l''abscisse maximale de la fonction: ');
p=input('Entrez le nombre de points(x0,x1,x2,..,xn) pour la fonction originale: ');
n=input('Entrez le nombre de points(x0,x1,x2,..,xn) pour l''interpolation: ');
X=linspace(min,max,p+1);
x=linspace(min,max,n+1);
L=ones(1,n+1);
y=ones(1,n+1);
P=ones(1,n+1);
for k=1+1
for j=1:n+1
L(j)=1;
for i=1:j-1
Lp=(X(k)-x(i))/(x(j)-x(i))
L(j)=L(j)*Lp;
end
for i=j+1:n+1
Lp=(X(k)-x(i))/(x(j)-x(i));
L(j)=L(j)*Lp;
end
y(j)=x(j).*x(j)-10;
end
ps=0;
for w=1:n+1
psp=y(w)*L(w);
ps=ps+psp;
end
P(k)=ps;
end
g=X.*X-10;
subplot(133)
plot(X,g,'b',X,P,'r')
title('Superposition des deux courbes');
xlabel('x');
ylabel('f(x),P(x)');
subplot(131);
plot(X,g)
title('Fonction exacte');
xlabel('x');
ylabel('f(x)');
subplot(132)
plot(X,P)
title('Interpolation de Lagrange');
xlabel('x');
ylabel('P(x)');
-----