Sunteți pe pagina 1din 4

UNIVERSIDAD NACIONAL DE CHIMBORAZO

FACULTAD DE INGENIERIA
CARRERA DE INGENIERÍA CIVIL
MÉTODOS NUMERICOS
GLOSARIO (FUNCIÓN POLYFIT)
AJUSTE DE DATOS CON POLYFIT

Según el Análisis expuesto en el Blog (Franco, 2016). Para realizar el ajuste respectivo de datos a
un polinomio se utiliza la función MATLAB polyfit, cuya sintaxis viene dada de la siguiente
manera:

𝑝 = 𝑝𝑜𝑙𝑦𝑓𝑖𝑡(𝑥, 𝑦, 𝑛)

- 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
los puntos si n= m-1. El grado n del polinomio no pude ser mayor que m-1.

En el siguiente ejemplo, se va a proceder a cambiar la llamada función pol_regresion por la


función MATLAB polyfit.

Datos para el ejemplo:

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)

%graficos

hold on

plot(x,y,’ro’, ‘markersize’, 4, ‘markerfacecolor’, ‘r’)

z=@(x) polyval (p,x);


fplot (z,[x(1), x(end)])

xlabel (‘x’)

ylabel(‘y’)

grid on

title (‘Polinomio aproximador’)

hold off

La sintaxis propuesta en el ejemplo anterior puede ser ampliamente usada en la ventana de


comandos del programa MATLAB.

Para correr en la ventana de comandos, simplemente corremos el script y nos aparecerá el vector
p que contiene los coeficientes a1, a2, a3 del polinomio.

p=
0.3446 3.7004 -0.1188
También se puede utilizar polyfit para realizar ajustes a una función potencial, exponencial,
logarítmica, etc., tal como se muestra en el siguiente cuadro.

FUNCION 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)
y= 1 ax+c 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.

 En el ejemplo dado, se realiza un ajuste a una función potencial.

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 on
plot(x,y,'ro','markersize',4,'markerfacecolor','r')
z=@(x) (10^p(2))*x.^p(1);
fplot(z,[x(1),x(end)])
xlabel('x')
ylabel('y')
grid on
title('Regresión potencial')
hold off
 Corremos el script en la ventana de comandos.

Exponente a= 0.331
Coeficiente c = 0.495
 En el ejemplo dado, se realiza un ajuste a una función exponencial.

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


y=[930 815 632 487 370 265 147 76 17];
p=polyfit(x,log(y),1);
fprintf('exponente a= %2.3f\n',p(1));
fprintf('coeficiente c = %3.3f\n',exp(p(2)));
hold on
plot(x,y,'ro','markersize',4,'markerfacecolor','r')
z=@(x) exp(p(2))*exp(x*p(1));
fplot(z,[x(1),x(end)])
xlabel('x')
ylabel('y')
grid on
title('Regresión exponencial')
hold off
 Y finalmente al correr el script en la ventana de comandos se obtiene:

exponente a= -0.005
coeficiente c = 1036.896
TOMADO DE:

Franco, A. (17 de Marzo de 2016). Ajuste de Datos con Matlab. Obtenido de


http://www.sc.ehu.es/sbweb/fisica3/datos/regresion/regresion_1.html

S-ar putea să vă placă și