Ajuste de Datos Con MATLAB

5
20/10/2015 Ajuste de datos con MATLAB http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/datos/datos_1.html 1/5 Raíces de ecuaciones Sistemas de ecuaciones Valores y vectores propios Integración numérica Ecuaciones diferenciales Interpolación, regresión Inicio MATLAB Numérico Ajuste de datos con MATLAB MATLAB dispone de la función polyfit para ajustar datos a un polinomio de grado n. También tiene la posibilidad de ajustar los datos de forma interactiva en la ventana gráfica (Figure Windows) seleccionado en el menú Tools/Basic Fitting. Ajuste de datos con el operador, división por la izquierda \. Conocidos los n pares de datos (x i ,y i ) i=1,2...n resolvemos el sistema de n ecuaciones para determinar las incógnitas, los coeficientes a 1, a 2 , a 3 del polinomio que mejor ajusta Tenemos n=9 pares de datos (x i ,y i ). Por lo que tenemos un sistema de nueve ecuaciones con tres incógnitas, que podemos resolver con el operador \ (división por la izquierda) x=[0,1,2,3,4,5,6,7,7.44]'; y=[0,4.03,8.12,14.23,20.33,27.1,34.53,42.63,46.43]'; M=[x.^2,x,ones(size(x))]; a=M\y %coeficientes del polinomio hold on plot(x,y,'ro','markersize',8,'markerfacecolor','r') x=(0:0.1:max(x))'; y=[x.^2,x,ones(size(x))]*a; %evalúa el polinomio para cada valor de x plot(x,y,'b') xlabel('x') ylabel('y') title('Polinomio aproximador') hold off En la ventana de comandos vemos los coeficientes a 1, a 2 , a 3 como elementos del vector a. En la ventana gráfica se obtiene una figura similar. a = 0.3446 3.7004 0.1188 Ajuste de datos con polyfit Para el ajuste de datos a un polinomio se utiliza la función MATLAB polifit, cuya sintaxis es la siguiente: p=polyfit(x,y,n) x, y son los vectores de las abscisas y de las ordenadas de los datos, respectivamente n, es el grado del polinomio al que se quieren ajustar los datos p, es el vector de los coeficientes de dicho polinomio. Para n=1 tenemos la regresión lineal. Si m es el número de datos, el polinomio pasa a través de todos los puntos si

description

Manual

Transcript of Ajuste de Datos Con MATLAB

Page 1: Ajuste de Datos Con MATLAB

20/10/2015 Ajuste de datos con MATLAB

http://www.sc.ehu.es/sbweb/energias­renovables/MATLAB/numerico/datos/datos_1.html 1/5

Raíces de ecuaciones

Sistemas de ecuaciones

Valores y vectorespropios

Integración numérica

Ecuacionesdiferenciales

Interpolación, regresión

Inicio MATLAB Numérico

Ajuste de datos con MATLABMATLAB dispone de la función polyfit para ajustar datos a un polinomio de grado n. También tiene laposibilidad de ajustar los datos de forma interactiva en la ventana gráfica (Figure Windows) seleccionado en elmenú Tools/Basic Fitting.

Ajuste de datos con el operador, división por la izquierda \.

Conocidos los n pares de datos (xi,yi) i=1,2...n resolvemos el sistema de n ecuaciones para determinar lasincógnitas, los coeficientes a1,a2, a3 del polinomio que mejor ajusta

Tenemos n=9 pares de datos (xi,yi). Por lo que tenemos un sistema de nueve ecuaciones con tres incógnitas, quepodemos resolver con el operador \ (división por la izquierda)

x=[0,1,2,3,4,5,6,7,7.44]';y=[0,4.03,8.12,14.23,20.33,27.1,34.53,42.63,46.43]';M=[x.^2,x,ones(size(x))];a=M\y %coeficientes del polinomio

hold onplot(x,y,'ro','markersize',8,'markerfacecolor','r')x=(0:0.1:max(x))';y=[x.^2,x,ones(size(x))]*a; %evalúa el polinomio para cada valor de xplot(x,y,'b')xlabel('x')ylabel('y')title('Polinomio aproximador')hold off

En la ventana de comandos vemos los coeficientes a1,a2, a3 como elementos del vector a. En la ventana gráficase obtiene una figura similar.

a = 0.3446 3.7004 ­0.1188

Ajuste de datos con polyfit

Para el ajuste de datos a un polinomio se utiliza la función MATLAB polifit, cuya sintaxis es la siguiente:

p=polyfit(x,y,n)

x, y son los vectores de las abscisas y de las ordenadas de los datos, respectivamente

n, es el grado del polinomio al que se quieren ajustar los datos

p, es el vector de los coeficientes de dicho polinomio.

Para n=1 tenemos la regresión lineal. Si m es el número de datos, el polinomio pasa a través de todos los puntos si

y = + x +a1x2 a2 a3

=

⎛⎝⎜⎜⎜

y1

y2

...yn

⎞⎠⎟⎟⎟

⎝⎜⎜⎜⎜

x21

x22

...x2

n

x1

x2

...xn

1

1

...1

⎠⎟⎟⎟⎟

⎛⎝⎜

a1

a2

a3

⎞⎠⎟

Page 2: Ajuste de Datos Con MATLAB

20/10/2015 Ajuste de datos con MATLAB

http://www.sc.ehu.es/sbweb/energias­renovables/MATLAB/numerico/datos/datos_1.html 2/5

n=m­1. El grado n del polinomio no puede ser mayor que m­1.

Renombramos el script datos_5 como datos_6, para cambiar la llamada a la función MATLAB polyfit en vez de apol_regresion

x=[0 1 2 3 4 5 6 7 7.44];y=[0 4.03 8.12 14.23 20.33 27.1 34.53 42.63 46.43];p=polyfit(x,y,2)

%gráficoshold onplot(x,y,'ro','markersize',8,'markerfacecolor','r')x=linspace(min(x),max(x),50);y=polyval(p,x);plot(x,y,'b')xlabel('x')ylabel('y')title('Polinomio aproximador')hold off

En la ventana de comandos corremos el script datos_6, y nos aparece el vector p que contiene los coeficientesa1,a2, a3 del polinomio

>> datos_6p = 0.3446 3.7004 ­0.1188

También se puede utilizar polyfit para realizar ajustes a una función potencial, exponencial, logarítmica, etc, talcomo se muestra en el siguiente cuadro

Función Llamada a polyfit

y=c∙xa p=polyfit(log(x), log(y),1)

y=c∙eax p=polyfit(x, log(y),1)y=a·ln(x)+c p=polyfit(log(x),y,1)

p=polyfit(x,1./y,1)

El primer elemento del vector p devuelto por polyfit, p(1) guarda el parámetro a y el segundo elemento, p(2)guarda el parámetro c.

Renombramos el script datos_2 como datos_7 para cambiar la llamada a la función MATLAB polyfit en vez deregresion.

x=[10 20 30 40 50 60 70 80];y=[1.06 1.33 1.52 1.68 1.81 1.91 2.01 2.11];p=polyfit(log10(x),log10(y),1);fprintf('exponente a= %2.3f\n',p(1));fprintf('coeficiente c = %3.3f\n',(10^p(2)));hold onplot(x,y,'ro','markersize',8,'markerfacecolor','r')x=linspace(min(x),max(x),50);z=(10^p(2))*x.^p(1);plot(x,z,'b')xlabel('x')ylabel('y')title('Regresión potencial')hold off

Corremos el script datos_7 en la ventana de comandos

>> datos_7exponente a= 0.331coeficiente c = 0.495

Renombramos el script datos_3 como datos_8 para cambiar la llamada a la función MATLAB polyfit en vez deregresion.

x=[12 41 93 147 204 264 373 509 773];y=[930 815 632 487 370 265 147 76 17];

y =1

ax + c

Page 3: Ajuste de Datos Con MATLAB

20/10/2015 Ajuste de datos con MATLAB

http://www.sc.ehu.es/sbweb/energias­renovables/MATLAB/numerico/datos/datos_1.html 3/5

p=polyfit(x,log(y),1);fprintf('exponente a= %2.3f\n',p(1));fprintf('coeficiente c = %3.3f\n',exp(p(2)));hold onplot(x,y,'ro','markersize',8,'markerfacecolor','r')x=linspace(min(x),max(x),100);z=exp(p(2))*exp(x*p(1));plot(x,z,'b')xlabel('x')ylabel('y')title('Regresión exponencial')hold off

Corremos el script datos_8 en la ventana de comandos

>> datos_8exponente a= ­0.005coeficiente c = 1036.896

Ajuste de forma interactiva

Determinar la recta de regresión para la siguiente tabla de datos, tomadas de una experiencia

x 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4y 0.25 0.42 0.58 0.72 0.85 0.98 1.10 1.12

Escribimos el script datos_9

x=[0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4];y=[0.25 0.42 0.58 0.72 0.85 0.98 1.1 1.12];p=polyfit(x,y,1)xp=linspace(min(x),max(x),20);yp=polyval(p,xp);plot(x,y,'r+',xp,yp)axis([min(x)­0.05,max(x)+.05, min(y)­0.1, max(y)+.1])grid onxlabel('x'), ylabel('y'), title('ajuste con polyfit')legend('datos originales','mejor ajuste','Location','SouthEast')

Corremos el script en la ventana de comandos

>> datos_9p = 2.5762 0.1729

Vamos a realizar el ajuste de datos de forma interactiva en la ventana Figure Window. En la ventana decomandos escribimos

>> x=[0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4];>> y=[0.25 0.42 0.58 0.72 0.85 0.98 1.1 1.12];>> plot(x,y,'+')

Aparece la representación gráfica de los puntos con el símbolo +

Page 4: Ajuste de Datos Con MATLAB

20/10/2015 Ajuste de datos con MATLAB

http://www.sc.ehu.es/sbweb/energias­renovables/MATLAB/numerico/datos/datos_1.html 4/5

Seleccionamos en el menú Tools/Basic Fitting, y activamos la casilla linear (polinomio de grado 1) yquadratic(polinomio de grado dos) en el primer panel titulado Plot fits. Observamos en la ventana Figure 1 queel polinomio de segundo grado en color verde parece que se ajusta mejor a los datos experimentales

Ampliamos el cuadro de diálogo pulsando en el botón con la flecha inferior derecha ­­> nos aprece loscoeficientes del polinomio de ajuste:

Seleccionamos en el segundo panel titulado Numerical results Fit/ linear y nos aparece

y = p1*x + p2

Page 5: Ajuste de Datos Con MATLAB

20/10/2015 Ajuste de datos con MATLAB

http://www.sc.ehu.es/sbweb/energias­renovables/MATLAB/numerico/datos/datos_1.html 5/5

Coefficients: p1 = 2.5762 p2 = 0.17286

Norm of residuals = 0.1187

Seleccionamos en el segundo panel titulado Numerical results Fit/quadratic y nos aparece

y = p1*x^2 + p2*x + p3

Coefficients: p1 = ‐3.381 p2 = 4.0976 p3 = 0.046071

Norm of residuals = 0.045696

Pulsamos el botón con la flecha ­­> para ampliar otra vez el cuadro de diálogo, podemos introducir un valor o unaexpresión para ser evaluada pulsando el botón Evaluate en el tercer panel titulado Find y=f(x).

El ajuste de datos de forma interactiva en la ventana Figure Window admite muchas posibilidades, que se puedenconsultar en el sistema de ayuda (Help).

Energías Renovables ©EUITI de Eibar