You are on page 1of 8

AJUSTE POLINOMIAL

Prof.: M.C. Guillermo


Chvez Hernndez

EXAMEN
Reynaldo Pulido Garca
El programa consta en obtener un polinomio de grado n que mejor ajuste a la nube de
datos que se nos proporcion.

El modelo es de la forma:

= 0 + 1 + 2 2 + +
Haciendo el ajuste en Excel:

Fig.1 Grafica de ajuste polinomial en Excel

Observamos que nos da un valor en los coeficientes 0 y 1 , donde:


0 =0.0025 y 1 =14.84

Y por lo que se puede observar es un polinomio de grado 1.

Observamos en la grfica que el valor del coeficiente de determinacin ( 2) es de 0.3727.

Ahora con el programa que se realiz se busc el polinomio que mejor ajustara a la nube
de datos, obtenindose los siguientes resultados:

1
Fig.2 Grafica que muestra la nube de datos
Para el polinomio de grado 1, obtenemos lo siguiente

Fig.3 Grafica que muestra el polinomio de grado 1 que ajusta l

En la figura 4, se nos muestran resultados, donde B


denota a los coeficientes del polinomio, errpredvd
denota el error de prediccin, R2 denota el
coeficiente de determinacin y r denota el coeficiente
de correlacin.
Haciendo una comparacin de estos resultados con
los de Excel podemos notar que son los mismos, lo
que nos dice que nuestro programa est trabajando
de manera correcta y adecuada.
Observemos que de grado 1 nos da un error de
prediccin bastante grande, en este caso el error de
prediccin es de 1466.084

Fig.4 Resultados
2
Para el polinomio de grado 2, obtenemos lo siguiente:

Fig.4 Grafica del polinomio de grado 2 y sus resultados

Haciendo una comparacin con el polinomio de grado uno, este nos da un error de
prediccin de 1226.52, lo que significa que este polinomio se ajusta mejor a los datos

Para el polinomio de grado 3: Haciendo una comparacin con el


polinomio de grado 2, este
polinomio tiene un error de
1226.43, y por unas dcimas este
se ajusta mejor que el 2

3
Para el polinomio de grado 4:

Haciendo una comparacin con el


polinomio de grado 3, este
presenta un error menor que el
anterior, el error del polinomio de
grado 4 es de 1221.84, este
polinomio es el que mejor se ha
ajustado hasta el momento.

Para el polinomio de grado 5


Comparando los polinomios de
grado 4 y 5, el de grado 5 tiene un
menor error que el de grado 4, por
lo tanto este polinomio se ajusta
mejor a la nube de datos.

Para el polinomio de grado 6

Para el polinomio de grado 6 el


error es de 1171.56 que en
comparacin con el polinomio de
grado 5, el de grado 6 es el que
mejor se ajusta.

4
Con los resultados obtenidos anteriormente podemos ver que el polinomio que mejor
ajuste hace es el de grado 6.
Si graficamos el polinomio y el misfit podremos ver cuando hay errores positivos como
negativos.

Para la realizar el programa se nos proporcion una frmula que es la siguiente:

= (( ))\( (: ,2))

Esta ecuacin nos sirve para obtener los valores de los m parmetros que queramos, a
partir de la matriz de coeficientes G, lo que se busc en el programa era obtener una matriz
G en donde Matlab nos arrojara los valores de los coeficientes de mi modelo = 0 +
1 + 2 2 + + , es decir G representa los valores de 0 = 1, , 2 ., y as y se nos
formara una matriz de 117 + 1 donde n ser el grado del polinomio, es decir que si el polinomio
es de grado 2 se nos formara una matriz de (117*3), ahora Matlab nos proporciona la facilidad de
calcular la transpuesta de una matriz solo con poner junto a la matriz, ahora (: ,2) significa que
le estamos declarando a Matlab que queremos el vector columna 2. En la ecuacin vemos que
aparece \, conocido como mejor conocido como divisin de la
izquierda. Entonces esta frmula nos proporciona los valores de los parmetros m que estudiamos
tericamente, donde la frmula que se nos proporcion significa = ( )1 , en donde
backslash nos dice que en el producto de G*G se calculara su inversa y posteriormente multiplicara
con la transpuesta de G por los datos dados d.

5
Script del programa:
function ajuspoliR
clear all;
clc;
%cargamos los datos
load('datos.txt');
x=datos(:,1); %Datos Xi
y=datos(:,2); %Datos Yi
N=length(x); %Numero de datos
figure(1)
plot(x,y,'.') %Grafica de los datos
title('Modelo')
xlabel('X') % Etiqueta el eje horizontal
ylabel('Y')% Etiqueta el eje vertical
legend('Datos') %
grid on
%modelo di=mo+m1xi+m2xi^2+...+mxi^n
%%%%%%%%%%%5creacion de la matri de mxn%%%%%%%%%%%%%%%%%
%matriz de coeficientes G=[1,x1,x1^2...,x1^n;
% 1,x2,x2^2...,x2^n;
% . .
% . .
% . .
% 1,xn,xn^2...,x^n]
a=2; %denotara columna 2
k=2% k=input ('dame el grado del polinomio: ');
r=k+1; %Numero de columnas de acuerdo al grado del polinomio
m=ones(N,r); %matriz de unos de Nxr
while r>1 %solo funciona si es r no es uno
m(:,a)=x; %denota que nuestra matriz m en la posicion (1,a) sera
igual a la columna de x
a=a+1;
r=r-1;
end
t=m; %matriz de coeficientes de la forma t=[1 x1 x1 ...xn:1 x2
x2..x2n]
%elevar al grado delpolinomio los segundos coeficientes, dependiendo el
%grado del polinomio
w=k+1; %numero de filas,k es el grado del polinomio
e=1;
s=0; %denotara a que grado se elevara
format long
%ciclo para elevar a la potencia n cada fila de la matriz G
for o=1:w
g=t(:,e).^s;
t(:,e)=g;
e=e+1;
s=s+1;
w=w-1;
end
G=t;%Nueva matriz de coeficientes G de la forma normal

%Calculo de la matriz de m parametros del modelo


B=((G'*G))\(G'*y) %Calculo de los coeficientes polinomiales
%calculo del modelo

6
y1=(G*B); %Valores predichos de la forma y^
por=length(y1); %Calculo de la longitud de la matriz de valores
predichos
figure(2);
plot(x,y,'g.',x,y1,'r+')

title('Ajuste Polinomial')
xlabel('X') % Etiqueta el eje horizontal
ylabel('Y')% Etiqueta el eje vertical
legend('Datos','Polinimio ajustador de grado n') % Pone una leyenda
grid on
misfiit=(y-y1);%Matriz para el calculo de misfit de valores dados mmenos
los predichos
misfitt=sum(misfiit); %Valor del error de prediccion
errpred=misfiit.^2;
errpredvd=sum(errpred) %Erorr de prediccion

medx=mean(x);%media de x
medy=mean(y);%media de y

% % % % % % % % sumx=sum((x-medx).^2);
% % % % % % % % sumy=sum((y-medy).^2);
% % % % % % % % sumxy=sum((x-medx).*(y-medy));
% % % % % % % % %coeficiente de correlacion
% % % % % % % % r=sumxy/sqrt(sumx*sumy)
%coeficiente de determinacion
vy1=sum((y1-mean(y1)).^2);
vy=sum((y-mean(y)).^2);
R2=vy1/vy

%coeficiente de correlacion
r=sqrt(R2)

% % % % % % % % % % % % medy1=mean(y1);%media de y1
% % % % % % % % % % % % sumy1=sum((y1-medy1).^2);
% % % % % % % % % % % % sumxy1=sum((x-medx).*(y1-medy1));
% % % % % % % % % % % % r1=sumxy1/sqrt(sumx*sumy1);
figure(3);
stem(x,misfiit,'.')
grid on
figure (4)
subplot(2,1,1),plot(x,y,'g.',x,y1,'r+'), grid on , title('Ajuste
polinomial'),ylabel('y'),xlabel('x')
subplot(2,1,2),stem(x,misfiit,'.'),title('Misfit'),ylabel('e'),xlabel('x'
)
grid on

You might also like