Está en la página 1de 5

UNIDAD 3.

AJUSTE DE DATOS
1.Regresion Lineal

Ejemplo (pag 3)

Antes he guardado el programa Regresion, que esta guardado para que lo de abajo me de la
solucion

>> t=[17.6 40.4 67.7 90.1];

>> x=[0 900 1800 2700];

>> [a b]=regresion(t,x);

>> fprintf('pendiente a= %2.3f, error %1.3f\n',a(1),a(2));

pendiente a= 36.710, error 1.001

>> fprintf('ordenada b= %3.3f, error %3.3f\n',b(1),b(2));

ordenada b= -630.509, error 60.580

>> %grafica

>> plot(t,x,'ro','markersize',8,'markerfacecolor','r')

>> tmin=min(t);

>> xmin=a(1)*tmin+b(1);

>> tmax=max(t);

>> xmax=a(1)*tmax+b(1);

>> line([tmin tmax],[xmin xmax]); %recta

>> xlabel('t')

>> ylabel('x')

>> grid on

>> title('Regresión lineal')


1.1 Funcion potencial

y=b·xa
Se puede trasformar en: log(y)=a·log(x)+log(b)
Si usamos las nuevas variablesX=log(x) eY=log(y), obtenemos la relación lineal
Y=AX+B.
dondeB=log(b)

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

Se utiliza el comando loglog


>>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];
>>loglog(x,y,'ro','markersize',4,'markerfacecolor','r')
>>xlabel('x')
>>ylabel('y')
>>grid on
>>title('Función potencial')

Se utiliza el programa regresion.m para calcular los parámetros a y b

X=log(x) 1.0 .13 1.477 1.6 1.699 1.778 1.845 1.903


Y=log(y) 0.025 0.124 0.182 0.225 0.258 0.281 0.303 0.324

>> 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];
>> [A,B]=regresion(log10(x),log10(y));
>> fprintf('exponente a= %2.3f\n',A(1));
exponente a= 0.331
>> fprintf('coeficiente b= %3.3f\n',10^B(1));
coeficiente b= 0.495
%Grafica (esta en el tema)
1.2 Funcion exponencial
y=b·eax
Tomando logaritmos neperianos en los dos miembros resulta: ln y=ax+ln(b) Si
sustituimos ahoraX=x, eY=ln(y), obtenemos la relación lineal
Y=AX+B
dondeB=ln(b).

X 12 41 93 147 204 264 373 509 773


Y 930 815 632 487 370 265 147 76 17

Representamos estos datos en un diagrama semilogarítmico mediante el comando


semilogy
>>x=[12 41 93 147 204 264 373 509 773];
>>y=[930 815 632 487 370 265 147 76 17];
>>semilogy(x,y,'ro','markersize',4,'markerfacecolor','r')
>>xlabel('x')
>>ylabel('y')
>>title('Función exponencial')
>>grid on

Para determinar la recta de regresión, se transforma esta tabla de datos en esta otra:

X=x 12 41 93 147 204 264 373 509 773


Y=ln(y) 6.835 6.703 6.449 6.188 5.913 5.580 4.990 4.33 2.833

x=[12 41 93 147 204 264 373 509 773];


y=[930 815 632 487 370 265 147 76 17];
[A,B]=regresion(x,log(y));
fprintf('exponente a= %2.3f\n',A(1));
exponente a=-0.005
fprintf('coeficiente b = %3.3f\n',exp(B(1)));
coeficiente b = 1036.896

%Grafica
hold on
plot(x,y,'ro','markersize',4,'markerfacecolor','r')
z=@(x) exp(B(1))*exp(x*A(1));
fplot(z,[x(1),x(end)])
xlabel('x')
ylabel('y')
grid on
title('Regresión exponencial')
hold off

2 Polinomio aproximador de grado n, n≥2


Queremos aproximar un polinomio de grado n : P(x)=a1xn+a2xn-1+...anx+an+1 a un
conjunto de m pares de datos (xj, yj) de modo que n<m.
Ejemplo:

n/100 0 1 2 3 4 5 6 7 7.44
T(min) 0 4.03 8.12 14.23 20.33 27.1 34.53 42.63 46.43

Ajustar el conjunto de pares de datos de la tabla con un polinomio de segundo grado:


P(x)= a1x2+a2x+a3.
Guardar el script pol_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=pol_regresion(x,y,2)

%gráficos
>>hold on
>>plot(x,y,'ro','markersize',4,'markerfacecolor','r')
>>y=@(x) polyval(p,x);
>>fplot(y,[x(1),x(end)])
>>xlabel('x')
>>ylabel('y')
>>grid on
>>title('Polinomio aproximador')
>>hold off

Un comando para reunir este programa es el POLYFIT

También podría gustarte