Regresión Polinomial

También se obtienen grupos de datos que se ajustan a un comportamiento polinomial de la forma y = ao + a1 x + a2 x2 + a3 x3 + ... En estos casos se usa polyfit(x,y,n) con n > 1.

Ejemplos de aplicación

Calor específico del agua

El gráfico que resulta de los valores experimentales del calor específico del agua como una función de la temperatura, muestra que los datos no se ajustan a una línea recta. El programa del listado 2 determina la mejor ecuación de ajuste al ensayar un polinomio de grado cuatro.

Para la solución de este ejemplo se consideran dos posibilidades de ajuste: el lineal (n = 1) y el polinomial (n = 4). El ajuste lineal (ecuación 1)se incluye para demostrar que no es correcto en este caso.

Cp = ao + boT (1)

Cp = a + bT + cT2 + dT3 + eT4 (2)

T (K) Cp cal/(g K)
   
273 1.00738
283 1.00129
293 0.99883
303 0.99802
313 0.99804
323 0.99854
333 0.99943
343 1.00067
353 1.00229
363 1.00437
373 1.00697
Tabla 2. Calor específico del agua

En el listado 2 aparece la estructura del programa. Se usa polyfit(x,y,n) con n = 4 para el ajuste polinomial.

Listado 2 – regpolinom.m

% Regresión polinomial
clear
clc
% Datos experimentales
Cp=[1.00738,1.00129,0.99883,0.99802,0.99804,0.99854,0.99943,1.00067,...
1.00229,1.00437,1.00697];
T=[273,283,293,303,313,323,333,343,353,363,373];
% Cálculo de los parámetros de regresión lineal (no es el ajuste correcto)
p1=polyfit(T,Cp,1);
r2=corrcoef(T,Cp);
Cp1=polyval(p1,T);
ao=p1(2); bo=p1(1);
fprintf('ao =%5.3e\n',ao);
fprintf('bo =%5.3e\n',bo);
fprintf('r2 =%5.4f\n\n',r2(2,1));
% Cálculo de los parámetros de regresión polinomial con n = 4
p2=polyfit(T,Cp,4);
a=p2(5); b=p2(4); c=p2(3); d=p2(2); e=p2(1);
fprintf('a =%5.3e\n',a);
fprintf('b =%5.3e\n',b);
fprintf('c =%5.3e\n',c);
fprintf('c =%5.3e\n',d);
fprintf('d =%5.3e\n\n',e);
% Cálculo de los nuevos valores de Cp según la función de ajuste
T1=linspace(273,373,100);
Cp2=polyval(p2,T1);
% Tabla de resultados
fprintf(' T, K Cp, cal/mol K\n\n');
for i=1:10:length(T1)
   fprintf('%5.0f',T1(i));
   fprintf('%15.5f\n',Cp2(i));
end
% Gráfico de los datos experimentales, de la recta y de la función de ajuste
plot(T,Cp,'*',T,Cp1,T1,Cp2);
title('Capacidad calórica del agua')
xlabel('T, K');
ylabel('Cp, cal/mol K');

Al correr el programa:
ao =9.934e-001
bo =2.485e-005
r2 =0.2397 % Este valor indica que el ajuste no es lineal

a =1.117e+001
b =-1.216e-001
c =5.446e-004
c =-1.085e-006
d =8.115e-010

T, K Cp, cal/mol K

273     1.00722
283     1.00161
293     0.99877
303     0.99778
313     0.99791
324     0.99865
334     0.99968
344     1.00088
354     1.00235
364     1.00438
EDU»

La representación gráfica de Cp versus T se muestra en la figura 2. Nótese que la regresión lineal no se ajusta a los datos experimentales.

 

Figura 2. Valores de Cp versus T para las ecuaciones de ajuste 1 y 2