Lagrange.sce

// Interpolación polinomial de Lagrange
// Ajusta un polinomio de orden n-1 a un
// conjunto de n datos e interpola
// para el valor dado de x

clear
disp("Interpolación polinomial de Lagrange");

// Pedir datos
n=input("Número de datos? n=");
x=zeros(n,1);
y=zeros(x);
disp ("Introduzca los datos:");
for i=1:n
    x(i)=input("x"+string(i)+"=");
    y(i)=input("y"+string(i)+"=");
end

// Pedir el valor de x para interpolar
xint=input("Valor para interpolar: x=");

// Cálculo de los factores de interpolación
// Se toma valor inicial 1 porque es un producto
L=ones(x);

for i=1:n
    for j=1:n
        if j<>i then
            L(i)=L(i)*(xint-x(j))/(x(i)-x(j));
        end
    end
end

// Cálculo del valor interpolado
suma=0;
for i=1:n
    suma=suma+L(i)*y(i);
end

// Reportar el valor interpolado
disp("y = " + string(suma));