RegresionPolinomial.sce

// Regresión polinomial - ajusta un polinomio de grado p a
// un conjunto de n datos y grafica los datos y el polinomio
clear
disp("Regresión polinomial");

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
p=input("Grado del polinomio? p=");

a=zeros(1,2*p+1);
a(1)=n;
for i=1:2*p
    a(i+1)=sum(x.^i);
end

A=zeros(p+1,p+1);
for i=1:p+1
    A(i,:)=a(i:i+p);
end

c=zeros(p+1,1);
c(1)=sum(y);
for i=1:p
    c(i+1)=sum((x.^i).*y);
end

b=A\c;

for i=0:p
    disp("Coeficiente de x^"+string(i)+" = "+string(b(i+1)))
end

clf
title("Regresión polinomial de grado "+string(p))
xlabel("x")
ylabel("y")
plot(x,y,"bo")
xe=linspace(min(x),max(x),250);
ye=zeros(xe);
for i=0:p
    ye=ye+b(i+1)*xe.^i;
end
plot(xe,ye,"r-")