Minimos Cuadrados en Matlab PDF
Minimos Cuadrados en Matlab PDF
Facultad de Ingeniería
Departamento Ingeniería Eléctrica.
TAREA Nº 1
“IDENTIFICACIÓN DE PARÁMETROS”
“Ajustes de curvas y regresión”
Alumnos:
Héctor A. Mella C.
Sebastián O. Mardones M.
Profesor:
Alejandro Rojas
Asignatura:
Identificación de parámetros
29 de abril de 2011 1
Introducción:
El método de mínimos cuadrados es una herramienta que permite dar respuesta al problema de
resolver sistemas de ecuaciones lineales sobre-determinados, es decir, sistemas lineales con más
ecuaciones que incógnitas. Así, en lugar de resolver las ecuaciones de manera exacta, habitualmente
no existe tal solución, se busca minimizar la suma de los cuadrados de los residuos. En específico la
aproximación de curvas mediante mínimos cuadrados busca encontrar los coeficientes para la
función F(x) tal que aproxime de la mejor forma posible al un set de datos.
Así, dado un conjunto de puntos ( xk , yk ) , con k=1,2,…,n pares de datos y fj(x) para j=1,2,…m un
conjunto de m funciones linealmente independientes nos proponemos encontrar un F ( xk ) yk es
decir:
m
F ( x) c j · f j ( x)
j 1
Notar que las funciones bases fj(x) pueden ser cualesquiera, luego se sobreentiende que F(x) es una
combinación lineal de dichas funciones base.
Para el caso particular en que la función F(x) sea un polinomio de orden n se tiene
f ( x) c1 c2 ·x ... cn ·x n
Usualmente para el set de datos se contempla m>n, es decir un sistema sobre-determinado de m
ecuaciones y n variables, en otras palabras este no tiene solución.
ek yk F ( xk )
sea mínimo.
Es importante mencionar que existen variadas formas de definir el error, mas aún cuando éste se
aplica a un conjunto de puntos y no solo a uno, dicho error podrá ser considerado como:
- Máximo Error:
Emax ( F ) max ek
2
m
e k
- Error Medio: Em ( F ) k 1
m
m
e
2
k
- Error Cuadrático Medio: Ecm ( F ) k 1
Siendo esta última manera de calcular el error la más común y la utilizada por el método de
mínimos cuadrados.
Luego dado el conjunto de puntos ( x1 , y1 ), ... , ( xm , ym ) se busca que el error
m
F (x ) y
2
i i
i 1
Sea lo menor posible, teniendo en cuenta que se debe encontrar el vector c que mejor aproxime a
A·c=y
f1( x1 ) f2 ( x1 ) fn ( x1 ) c1 y1
f1 ( x2 ) f2 ( x2 ) fn ( x2 ) c2 y 2
·
f (x ) f2 ( xm ) fn ( xm ) cn y m
1 m
3
Ejemplo método mínimos cuadrados caso lineal:
Se tiene un set de datos los que se desean ajustar en el sentido de Mínimos cuadrados según una
aproximación polinomial de tercer orden.
Tabla 1.1: “Set de datos aproximación polinomial”
X Y
0.0 10.500
0.5 5.4844
1.0 0.0000
1.5 -3.6094
2.0 -4.5000
2.5 -2.9531
3.0 0.000
3.5 2.9531
4.0 4.5000
4.5 3.6094
5.0 0.0000
Se deben encontrar los coeficientes a, b, c y d para determinar el polinomio p(x)
p( x) a·x 3 b·x 2 c·x d
Evaluando los valores de x presentes en la Tabla 1.1 según el polinomio anterior se puede obtener
un sistema de ecuaciones de la forma A·X=Y , donde en la matriz A cada fila representa a un dato
evaluado en las funciones normalizadas fj(x) con j=1,2,3,4 correspondientes al polinomio, el
vector c contiene los coeficientes (a determinar) que minimizan el error y el vector y los datos de
salida de nuestra función a aproximar.
Notar que el sistema posee más ecuaciones que incógnitas (m>n), es decir, es un sistema sobre-
determinado. El sistema se puede resolver de forma única con las primeras tres ecuaciones, pero
con este resultado no se satisface al resto.
Entonces se tiene que para que el error cuadrático medio sea el mínimo
4
y
m 11
ek
2
(a·xk b·xk c·xk d )
2 3 2
k
Ecm ( F ) k 1
k 1
m 11
0.9583
8.5000
Así resulta un c
20.7917
12.0000
Finalmente se tiene el polinomio de tercer grado que aproxima el conjunto de datos con el menor
error cuadrático medio como
p( x) 0.9583·x 3 8.5·x 2 20.7917 x 12
10
4
y
-2
-4
-6
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
x
C=b(4)+b(3)*t.^1+b(2)*t.^2+b(1)*t.^3;
figure(1)
plot(t,C,'linewidth',2); grid on; xlabel('x'); ylabel('y');
title('Aproximación método mínimos cuadrados');
hold; plot(X,Y,'or','linewidth',2);
legend('Aprox. mínimos cuadrados','Mediciones');
5
Ejemplo método mínimos cuadrados caso no lineal reducible a lineal:
Estos datos se puede establecen seis ecuaciones y dos incógnitas. Entonces se tiene el siguiente
sistema sobre-determinado.
1 0.000 1.1454
1 0.400 1.4854
1 0.800 ln( a) 1.7951
·
1 1.200 b 2.1577
1 1.600
2.3986
x
1 2.000 2.7860
A z
6
A·x z A ·A·x A ·y
t t
x At ·A
1
At ·y
Se llega a que
ln(a) 1.1539
f ( x) a·ebx 3.1705e0.8075x
2.4
2.2
1.8
1.6
1.4
1.2
1
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
7
manera con una recta, para encontrar los coeficientes de esta se utilizó mínimos cuadrados según el
procedimiento anterior, obteniendo el resultado que se muestra en la figura1.2 . Luego para tener la
solución real a nuestro problema se aplica la función exponencial obteniéndose los resultados
expuestos en la figura1.3.
14
12
10
y
2
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
x
Si bien el método de los mínimos cuadrados solo sirve para aproximar modelos lineales, existen
otros casos de modelos no lineales reducibles a lineales, como por ejemplo:
f ( x) c·e axbx :
2
a
f ( x)
bx : Tomando los recíproco
k0
f ( x)
1 a·e bx : Con k0 conocido, se toman los recíprocos, se resta 1 para finalmente
se aplica logaritmo natural.
Una observación importante es que este método proporciona una buena estimación cuando se tienen
pocos datos (alrededor de diez), o en su defecto, un número mayor de mediciones pero bajo las
mismas circunstancias experimentales, ya que si se presentan mediciones atípicas y estas son
asimétricas los parámetros estimados pueden estar sesgados por estos valores erróneos, el método
de mínimos cuadrados presenta una notoria falta de robustez frente a este problema y en ocasiones
8
las aproximaciones pueden ser ineficientes en extremo debido a la presencia de mediciones atípicas
asimétricas.
Por otra parte, es reproducible, cada experimentador proporciona igual aproximación para datos
iguales, no obstante en el sentido de adquirir la data es irreproducible.
El método de regresión es ampliamente utilizado para pronosticar funciones. Aunque los casos que
veremos en el presente informe, se limita a un número de casos específicos. En otras palabras los
puntos dados tienen que tener una proyección en el tiempo, ya sea lineal o cuadrática. Como
veremos a continuación el método se basa en reducir el error total en la zona de la interpolación.
Regresión Lineal
La regresión lineal se utiliza cuando los puntos a tratar siguen una trayectoria de carácter lineal.
Entonces se buscara la recta que mejor ajuste a todos los puntos dados. De manera de reducir el
error deseado.
Conocemos n datos (𝑥1 , 𝑦1 ), (𝑥2 , 𝑦2 ), … (𝑥𝑛 , 𝑦𝑛 ), y deseamos encontrar la recta que mejor se ajuste
a estos n puntos. Como ya sabemos la forma que tendrá la recta será
Tenemos en la figura una serie de puntos distribuidos en el plano y una recta cualquiera que
pretende realizar una buena interpolación a todos los puntos dados.
puntos dados
6
3
y
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
x
Figura2.1: “Puntos en el plano y una recta que pretende aproximar a la función generadora de
estos puntos”
9
Notar que esta es nuestra curva aproximada y debemos minimizar el error. El error es la diferencia
entre la recta propuesta y los puntos dados. A cada error lo denotaremos.
𝛿𝑖 = 𝑦𝑖 − (𝑚𝑥𝑖 + 𝛽)
Este corresponde al error del punto i. Es fácil notar que el Error total será la suma de todos los
errores. Además cabe destacar que el error puede ser positivo o negativo, por lo que al intentar
buscar un mínimo nos enfrentaremos a un problema, por ejemplo; un 𝛿𝑖 = −10 es menor error que
𝛿𝑖 = 2.5. Claramente la afirmación no es del todo correcta, pues si bien en signo 𝛿𝑖 = −10 es
menor, en magnitud resulta ser un peor error. Para resolver este problema buscamos encontrar el
mínimo error al cuadrado así.
𝑛 𝑛 2
2
𝐸𝑡𝑜𝑡𝑎𝑙(𝑚, 𝛽) = 𝛿𝑖 = {𝑦𝑖 − (𝑚𝑥𝑖 + 𝛽)}
0 0
Por lo que ahora nos centramos en minimizar la amplitud del error, el cual se producirá cuando
𝑦𝑖 = 𝑚𝑥𝑖 + 𝛽 . Entonces dada que esta función es la que debemos minimizar en términos de 𝑚 𝑦 𝛽.
Simplemente derivamos la función y la igualamos a cero.
𝑛 𝑛
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕 2
= {𝑦𝑖 − 𝑚𝑥𝑖 + 𝛽 } = −2 {𝑦𝑖 − (𝑚𝑥𝑖 + 𝛽)} 𝑥𝑖
𝜕𝑚 𝜕𝑚
0 0
𝑛 𝑛
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕 2
= {𝑦𝑖 − 𝑚𝑥𝑖 + 𝛽 } = −2 {𝑦𝑖 − (𝑚𝑥𝑖 + 𝛽)}
𝜕𝛽 𝜕𝛽
0 0
𝑛 𝑛 𝑛
0= 𝑦𝑖 − 𝑚𝑥𝑖 − 𝛽 𝑛𝛽 +𝑚 𝑥𝑖 = 𝑦𝑖
0 0 0
Esto da como resultado un sistema de ecuaciones lineales de 2x2, donde la solución se puede
realizar por simple sustitución como sigue.
𝑛 𝑛
𝑛 𝑦𝑖 𝑥𝑖 −
0 0 𝑦𝑖 𝑛0 𝑥𝑖
𝑚=
𝑛 𝑛0 𝑥𝑖 2 − 𝑛
0 𝑥𝑖
2
10
𝑛 𝑛
1
𝛽= 𝑦𝑖 − 𝑚 𝑥𝑖
𝑛
0 0
Una vez obtenida la forma de encontrar la mejor recta, veamos un ejemplo para ilustrar su
funcionamiento
Código solución
x=0:0.5:5;
y=[ 0.8256 1.2900 1.3185 2.0341 2.0900 2.6117...
3.1363 4.1787 4.4952 4.6897 5.4950];
% Algoritmo de resolución:
m=(length(x)*(x*y')-sum(x)*sum(y))/(length(x)*(x*x')-(sum(x))^2);
beta=(1/length(x))*(sum(y)-m*sum(x));
11
Puntos dados y Solución con Regresión Lineal
5.5
4.5
3.5
3
y
2.5
1.5
0.5
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
x
Se puede concluir que el proceso de regresión fue exitoso, la recta encontrada claramente ajusta a
los puntos dados.
Regresión Cuadrática:
𝑦 = 𝑎𝑥 2 + 𝑏𝑥 + 𝑐
Entonces derivando cada la función del error por cada parámetro de interés y luego igualando a cero
tenemos que.
𝑛 𝑛
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕 2 2
= {𝑦𝑖 − 𝑎𝑥𝑖 − 𝑏𝑥𝑖 − 𝑐} = −2 {𝑦𝑖 − 𝑎𝑥𝑖 2 − 𝑏𝑥𝑖 − 𝑐}
𝜕𝑐 𝜕𝑚
0 0
12
𝑛 𝑛
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕 2 2
= {𝑦𝑖 − 𝑎𝑥𝑖 − 𝑏𝑥𝑖 − 𝑐} = −2 {𝑦𝑖 − 𝑎𝑥𝑖 2 − 𝑏𝑥𝑖 − 𝑐} 𝑥𝑖
𝜕𝑏 𝜕𝛽
0 0
𝑛 𝑛
𝜕𝐸𝑡𝑜𝑡𝑎𝑙 𝜕 2 2
= {𝑦𝑖 − 𝑎𝑥𝑖 − 𝑏𝑥𝑖 − 𝑐} = −2 {𝑦𝑖 − 𝑎𝑥𝑖 2 − 𝑏𝑥𝑖 − 𝑐} 𝑥𝑖 2
𝜕𝑎 𝜕𝛽
0 0
𝑛 𝑛 𝑛
2
𝑎 𝑥𝑖 + 𝑏 𝑥𝑖 + 𝑛𝑐 = 𝑦𝑖
0 0 0
𝑛 𝑛 𝑛 𝑛
3 2
𝑎 𝑥𝑖 + 𝑏 𝑥𝑖 + 𝑐 𝑥𝑖 = 𝑥𝑖 𝑦𝑖
0 0 0 0
𝑛 𝑛 𝑛 𝑛
4 3 2
𝑎 𝑥𝑖 + 𝑏 𝑥𝑖 + 𝑐 𝑥𝑖 = 𝑦𝑖 𝑥𝑖 2
0 0 0 0
Notar que en esta ocasión tenemos un sistema de 3x3, cabe destacar que se pueden realizar métodos
básicos de resolución de ecuaciones, pero por simplicidad de resolverá de la forma matricial.
𝑛 𝑛 𝑛
𝑥𝑖 2 𝑥𝑖 𝑛 𝑦𝑖
0 0 0
𝑛 𝑛 𝑛 𝑎 𝑛
3 2 𝑏 =
𝑥𝑖 𝑥𝑖 𝑥𝑖 𝑥𝑖 𝑦𝑖
0 0 0 𝑐 0
𝑛 𝑛 𝑛 𝑛
𝑥𝑖 4 𝑥𝑖 3 𝑥𝑖 2 𝑦𝑖 𝑥𝑖 2
0 0 0 0
Notar que estamos frente a un sistema cuadrado de 3x3, donde la solución de dicho sistema es el
𝑎
vector de coeficientes 𝑏 .
𝑐
13
Ejemplo Regresión Cuadrática
Código Solución
x=0:0.5:5;
y =[ 0.9629 1.9739 1.8361 4.8110 5.2438 8.1302...
11.2159 14.2359 19.1116 21.9506 26.0898];
b=[sum(y);x*y';y*(x.^2)'];
SOL=inv(A)*b;
figure(3)
plot(x,y,'ob',x,SOL(1)*x.^2+SOL(2)*x+SOL(3),'r');grid on;
title('Puntos dados y Solución con Regresión Cuadrática')
xlabel('x')
ylabel('y')
14
Puntos dados y Solución con Regresión Cuadrática
30
25
20
15
y
10
0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
x
Del gráfico se concluye que la parábola encontrada si ajusta a los puntos dados. Entonces la
solución mediante Regresión Cuadrática es:
Regresión no Lineal
A parte de los métodos de regresión mostrados, específicamente el lineal, se pueden resolver casos
no lineales, que son reductibles a lineales. Ejemplo de esto son la función exponencial, potencial y
logaritmo. Que son fácilmente reductibles a lineales.
ln(y) = a + bx
15
Entonces de acá se obtiene 𝑌 = ln(y), lo que la convierte en una regresión lineal
Debido a que la regresión lineal ya se abordo y que todas estas linealizaciones siguen una misma
lógica, se opto por mostrar sólo un ejemplo de regresión reductible a lineal. Modelo Logarítmico.
X Y
1 0.5816
2 1.2202
3 1.7831 4
4 1.9247
3.5
5 1.7664
6 2.0636 3
7 2.7015
8 2.5249 2.5
9 2.5641
2
10 2.7046
11 3.1081 1.5
12 2.5082
13 2.9918 1
14 2.8380
15 3.1434 0.5
0 2 4 6 8 10 12 14 16 18 20
16 3.1693
17 3.2345 Figura2.3: “Set de datos regresión no lineal”
18 3.6499
19 3.1624
20 3.9490
16
Linealizando el problema
3.5
2.5
1.5
0.5
0 0.5 1 1.5 2 2.5 3
Notemos que si pasamos este problema a lineal, cambiando el eje de las abscisas a escala
logarítmica, podemos resolver el problema como se muestra en la figura.
4
3.5
2.5
1.5
0.5
0 2 4 6 8 10 12 14 16 18 20
Volviendo a la escala inicial tenemos la solución al problema dado. Donde la curva encontrada
satisface las condiciones de mínimo.
𝑌 = 0.5246 + 0.9708log(x)
17
Código solución:
X=1:1:20;
y=[ 0.5816 1.2202 1.7831 1.9247 1.7664 2.0636 2.7015 2.5249
2.5641 2.7046 3.1081 2.5082 2.9918...
2.8380 3.1434 3.1693 3.2345 3.6499 3.1624 3.9490];
figure(6)
plot(X,y,'o');grid on;
x=log(X);
m=(length(x)*(x*y')-sum(x)*sum(y))/(length(x)*(x*x')-(sum(x))^2);
beta=(1/length(x))*(sum(y)-m*sum(x));
figure(4)
plot(x,y,'o',x,beta+m*x,'-r');grid on;
% Volviendo a las variables originales
figure(5)
plot(X,y,'o',X,beta+m*x);grid on;
Es un método de ajuste de curvas que pretende encontrar un ajuste exacto, en otras palabras que la
curva encontrada pase por todos los puntos dados. Entre las más utilizadas tenemos La
interpolación polinomial de Lagrange y Splines Cubicas. En este informe presentaremos los
polinomios de Lagrange.
Interpolación Polinomial: Nuestro objetivo es obtener una función P, cuya curva aproxime a una
función desconocida F de la que solo tenemos un limitado número de puntos. Por lo tanto estos
puntos son utilizados como requisito para la función P. En otras palabras le exigimos a P que por lo
menos pase por los puntos (𝑥0 , 𝑦0 ), (𝑥1 , 𝑦1 ), … (𝑥𝑛 , 𝑦𝑛 ).
Entonces tenemos los n+1 puntos dados, y además les pedimos que puedan representar a una
función es decir 𝑥𝑖 ≠ 𝑥𝑗 si 𝑖 ≠ 𝑗. Siguiendo con P, éste es un polinomio 𝑝 𝑥 = 𝑎0 + 𝑎1 𝑥 +
⋯ 𝑎𝑚 𝑥 𝑚 , notemos que tenemos m+1 parámetros independientes, además resulta lógico pensar que
m=n.
Notemos que agregando las condiciones dadas (los puntos de la desconocida función F), obtenemos
un sistema de ecuaciones escrito matricialmente por:
Problema a solucionar:
1 𝑥1 𝑥1 2 … 𝑥1 𝑛−1 𝑎1 𝑦1
⋮ ⋱
⋱ ⋮ = ⋮
⋱ ⋮
1 𝑥𝑛 𝑥𝑛 2 … 𝑥𝑛 𝑛−1 𝑎𝑛+1 𝑦𝑛
Encontrar la inversa de esta ecuación matricial corresponde a encontrar el polinomio, pero encontrar
la inversa de esta ecuación podría ser una tarea titánica.
18
Solución de Lagrange:
Se puede obtener la solución al sistema planteado sin la necesidad de resolverlo, esto se logra a
través de los polinomios de lagrange. Dado el set de puntos como el mostrado anteriormente, existe
un polinomio de grano menor o igual a n tal que interpola los puntos dados. El polinomio que
realiza esto es p(x), el cual es único dentro del conjunto de polinomios menor o igual a n.
Primeramente se determina el polinomio ℓ𝑖 , de grado menor o igual a n que interpola a los puntos
(𝑥𝑗 , 𝑦𝑗 ) tal que 𝑦𝑖 = 1 e 𝑦𝑗 = 0 para todo 𝑗 ≠ 𝑖.
ℓ𝑖 𝑥 = 𝑐 𝑥 − 𝑥0 𝑥 − 𝑥1 … 𝑥 − 𝑥𝑖−1 𝑥 − 𝑥𝑖+1 … (𝑥 − 𝑥𝑛 )
1 𝑠𝑖 𝑖 = 𝑗
ℓ𝑖 𝑥𝑗 = 𝑖, 𝑗 = 0, … 𝑛.
0 𝑠𝑖 𝑖 ≠ 𝑗
𝑝 𝑥 = 𝑦0 ℓ0 𝑥 + ⋯ 𝑦𝑛 ℓ𝑛 𝑥
Resumiendo:
𝑛
𝑝 𝑥 = 𝑦𝑖 ℓ𝑖 (𝑥)
𝑖=0
19
Ejemplo de Polinomios de Lagrange:
A pesar de que Matlab incorpora funciones de polinomios, por ejemplo polyfit y polyvar. A
continuación se muestra el algoritmo solución implementado por nosotros, para la resolución de
este problema. Además se comentará, por que las funciones polinomiales no son tan
frecuentemente usadas como las del tipo de regresión, mínimos cuadrados u otros ajustes.
Codigo Solución
%% Algorirmo de lagrange
x=-5:5;
y=1./(1+x.^2);
xx=-5:0.1:5;
const=zeros;
p=zeros;
for k=1:length(xx)
for h=1:length(x)
const(h)=li(h,x,xx(k));
end
p(k)=y*const';
end
figure(1)
plot(x,y,'o',xx,p);grid on;
function sol=li(i,x,var)
sol=1;
for j=1:11
if j==i
continue
end
sol=sol*((var-x(j))/(x(i)-x(j)));
end
20
2
puntos
aproximación polinomial
real
1.5
0.5
-0.5
-5 -4 -3 -2 -1 0 1 2 3 4 5
Notar que este algoritmo cruza exactamente a todos los punto, por lo que el error resultante es cero.
Lamentablemente se producen variadas oscilaciones especialmente en los extremos de la
interpolación, evidentemente esto es un efecto no deseado. A este fenómeno se le conoce como “El
Fenómeno de Runge”, métodos como numéricos polinomicos como la spline cubica mejora esto, ya
que crea funciones cubicas por tramos, asegurando la suavidad entre cada tramo, pero
lamentablemente se sacrifica simplicidad, debido al fuerte trabajo de calculo que requiere la spline.
Conclusiones
En esta tarea se han presentado las ideas fundamentales para el ajuste de datos experimentales a
polinomios o formas no lineales que forman un sistema lineal de coeficientes. Los métodos tratados
son en general métodos propiamente de aproximación gráfica, precisamente es por esta razón, por la
cual se debe tener un buen conocimiento sobre el conjunto de datos tratados ya que para tener los
resultados deseados, es decir una representación fiable de lo que realmente ocurre en un proceso los
datos obtenidos deben cumplir con una serie de requerimientos, entre ellos los más importantes son
la ausencia de redundancia y obtención de datos anómalos, estos últimos pueden alterar
enormemente las aproximaciones efectuadas por cualquiera los métodos mencionados.
También tener en cuenta que no siempre una aproximación optima de los datos experimentales
determina una mejor aproximación o modelo para un proceso dado, es sabido que la adquisición de
datos posee una cierta incertidumbre y en consecuencia la data se ve alterada por errores de
medición o presencia de ruido. Teniendo esto en cuenta la excesiva aproximación (interpolación) de
los datos en muchos casos podrían llevarnos a aproximaciones erróneas que por lo demás son
mucho más complejas de lo que realmente son los mismos procesos, un ejemplo de esto es la
interpolación polinomial como la mostrada en la figura.3.1.
21