3.9 Método de mínimos cuadrados
.
Ello equivale por tanto a hallar los m coeficientes:
. En concreto, se desea que tal función
sea la mejor aproximación a los n pares
empleando, como criterio de "mejor", el criterio del mínimo error cuadrático medio de la función
con respecto a los puntos
.
Siendo i=1, 2, . . ., m
para i=1, 2, . . ., m
para i=1, 2, . . ., m
Si se desarrolla la suma, se visualiza la ecuación "i-ésima" del sistema de m ecuaciones normales:

y para una función h(x) y vector cualquiera u, como:
La
resolución de dicho sistema permite obtener, para cualquier base de
funciones derivables localmente, la función f(x) que sea mejor
aproximación mínimo cuadrática al conjunto de puntos antes mencionado.
La solución es óptima –esto es, proporciona la mejor aproximación
siguiendo el criterio de mínimo error cuadrático–, puesto que se obtiene
al optimizar el problema.
El siguiente algoritmo recibe un número arbitrario de pares de datos en la forma de una matriz de 2*n, donde las abcisas se encuentran en la primera fila (o renglón) y las ordenadas en la segunda fila de la matriz, devolviendo la pendiente m y el intercepto b de la recta que interpola a los datos y además entrega su gráfica:
function [m,b]=mincuadlin(X)
n=length(X(1,:));
A=0;
B=0;
C=0;
D=0;
for i=1:n;
A=A+X(1,i);
B=B+X(2,i);
C=C+(X(1,i))^2;
D=D+X(1,i)*X(2,i);
end
m=(n*D-A*B)/(n*C-A^2);
b=(C*B-D*A)/(n*C-A^2);
for i=1:n;
hold on;
plot (X(1,i),X(2,i),'*','MarkerEdgeColor','r','LineWidth',1);
end
x=X(1,1):1:X(1,n);
y=m*x+b;
plot(x,y,'b');
title('Aproximación lineal por mínimos cuadrados.');
Por ejemplo, para los datos {(1,0),(2,3),(3,4),(4,-6),(5,2),(6,4),(7,0),(8,4),(9,3)}, se escribe en el Command Window:
>>X=[1 2 3 4 5 6 7 8 9; 0 3 4 -6 2 4 0 4 3];
>>[m,b]=mincuadlin(X)
Y el programa entrega los resultados:
m = 0.2833
b = 0.1389
3.9 Método de mínimos cuadrados
El
método de mínimos cuadrados sirve para interpolar valores, dicho en
otras palabras, se usa para buscar valores desconocidos usando como
referencia otras muestras del mismo evento.
El
método consiste en acercar una línea o una curva, según se escoja, lo
más posible a los puntos determinados por la coordenadas [x, f(x)], que
normalmente corresponden a muestras de algún experimento.
Cabe
aclarar que este método, aunque es sencillo de implantar no es del todo
preciso, pero si proporciona una interpolación aceptable.
Como se comento previamente se puede usar una recta o una curva como base para calcular nuevos valores.
Deducción analítica de la aproximación discreta mínimo
cuadrática lineal.
Sea
un conjunto de n pares con abscisas distintas, y sea
un
conjunto de m funciones linealmente independientes (en un espacio
vectorial de funciones), que se llamarán funciones base. Se desea
encontrar una función
de dicho espacio, o sea, combinación lineal de las funciones base, tomando por ello la forma:
Ello equivale por tanto a hallar los m coeficientes:
El error cuadrático medio será para tal caso:
Minimizar
el error cuadrático medio es equivalente a minimizar el error
cuadrático, definido como el radicando del error cuadrático medio, esto
es:
Así, los
que minimizan
también minimizan
, y podrán ser calculados derivando e igualando a cero este último:
Se obtiene un sistema de m ecuaciones con m incógnitas, que recibe el nombre de "Ecuaciones Normales de Gauss". Operando con ellas:
Si se desarrolla la suma, se visualiza la ecuación "i-ésima" del sistema de m ecuaciones normales:
para cada i=1, 2, . . ., m
Lo cual, en forma matricial, se expresa como:
Lo cual, en forma matricial, se expresa como:
Siendo
el producto escalar discreto, definido para dos funciones dadas h(x) y g(x) como:
y para una función h(x) y vector cualquiera u, como:
CODIGO:
Algoritmo en MATLAB para la aproximación lineal por el método de los mínimos cuadrados.
El siguiente algoritmo recibe un número arbitrario de pares de datos en la forma de una matriz de 2*n, donde las abcisas se encuentran en la primera fila (o renglón) y las ordenadas en la segunda fila de la matriz, devolviendo la pendiente m y el intercepto b de la recta que interpola a los datos y además entrega su gráfica:
function [m,b]=mincuadlin(X)
n=length(X(1,:));
A=0;
B=0;
C=0;
D=0;
for i=1:n;
A=A+X(1,i);
B=B+X(2,i);
C=C+(X(1,i))^2;
D=D+X(1,i)*X(2,i);
end
m=(n*D-A*B)/(n*C-A^2);
b=(C*B-D*A)/(n*C-A^2);
for i=1:n;
hold on;
plot (X(1,i),X(2,i),'*','MarkerEdgeColor','r','LineWidth',1);
end
x=X(1,1):1:X(1,n);
y=m*x+b;
plot(x,y,'b');
title('Aproximación lineal por mínimos cuadrados.');
Por ejemplo, para los datos {(1,0),(2,3),(3,4),(4,-6),(5,2),(6,4),(7,0),(8,4),(9,3)}, se escribe en el Command Window:
>>X=[1 2 3 4 5 6 7 8 9; 0 3 4 -6 2 4 0 4 3];
>>[m,b]=mincuadlin(X)
Y el programa entrega los resultados:
m = 0.2833
b = 0.1389
Comentarios
Publicar un comentario