function polynome_lagrange()
clc;
disp('=== Générateur de Polynôme de Lagrange ===');
disp('Ce programme vous permet de générer un polynôme à partir des points et de
calculer ses images.');
% Étape 1 : Demander le nombre de points
while true
try
n = input('Entrez le nombre de valeurs (>= 2) que vous voulez entrer :
');
if n < 2 || ~isnumeric(n) || floor(n) ~= n
error('Vous devez entrer un entier >= 2.');
end
break;
catch ME
disp(['Erreur : ', [Link]]);
end
end
% Étape 2 : Entrer les valeurs x et leurs images y
x = zeros(1, n);
y = zeros(1, n);
disp('Veuillez entrer les coordonnées des points :');
for i = 1:n
while true
try
x(i) = input(['x(', num2str(i), ') : ']);
y(i) = input(['y(', num2str(i), ') : ']);
break;
catch
disp('Erreur : Entrée invalide. Essayez à nouveau.');
end
end
end
% Vérifier si les valeurs de x sont distinctes
if numel(unique(x)) ~= n
disp('Erreur : Les valeurs de x doivent être distinctes.');
return;
end
% Étape 3 : Générer le polynôme de Lagrange
lagrange_poly = lagrange(x, y);
disp('Le polynôme de Lagrange généré est :');
disp(poly2str(lagrange_poly, 'x'));
% Étape 4 : Calculer des images pour de nouvelles valeurs
while true
disp('=== Calcul des images ===');
try
new_x = input('Entrez une valeur pour laquelle calculer l''image (ou
"exit" pour quitter) : ', 's');
if strcmpi(new_x, 'exit')
disp('Programme terminé. Merci d''avoir utilisé ce programme !');
break;
end
new_x = str2double(new_x);
if isnan(new_x)
error('Entrée invalide. Entrez un nombre ou "exit" pour quitter.');
end
new_y = polyval(lagrange_poly, new_x);
disp(['Pour x = ', num2str(new_x), ', y = ', num2str(new_y)]);
catch ME
disp(['Erreur : ', [Link]]);
end
end
end
function poly = lagrange(x, y)
% Fonction pour générer le polynôme de Lagrange
n = length(x);
poly = 0;
for i = 1:n
L = 1;
for j = 1:n
if j ~= i
L = conv(L, [1, -x(j)]) / (x(i) - x(j));
end
end
poly = poly + L * y(i);
end
end