You are on page 1of 9

Mnimos cuadrados estadar

Mnimos cuadrados es una tcnica de anlisis numrico enmarcada dentro de


la optimizacin matemtica, en la que, dados un conjunto de pares ordenados: variable
independiente, variable dependiente, y una familia de funciones, se intenta encontrar
la funcin continua, dentro de dicha familia, que mejor se aproxime a los datos (un "mejor
ajuste"), de acuerdo con el criterio de mnimo error cuadrtico.
Visto de forma sencilla:

Ax= y

x= A1 y
Donde

est formado por la

g=a x 2 +b y 2 +cx +dy + e ,

evaluacin de las coordenadas de los puntos en la funcin


mientras que

son los valores gravimtricos tomados en campo, y

x son los parmetros que se buscan.

Debido a que no se puede obtener la inversa de la matriz


pseudoinversa, que queda expresada como

fcilmente, se utiliza la

A1=( A T A)1 AT y=( A ' A)1 A ' y .

x=( A ' A)1 A ' y

I Resolver por mnimos cuadrados los siguientes problemas.


a) y1=Ax1
Encontrar x1
b) y2=Ax2
Encontrar x2
c) y3=Ax1
Evaluar a x1
d) y4=Ax2
Evaluar a x2
e) Decir si y1=y3 y2=y4
clear all
close all
clc
A=[36 -630 3360 -7560 7560;-630 14700 -88200 211680 -220500;3360 -88200
564480 -1411200 1512000;-7560 211680 -1411200 3628800 -3969000;7560
-220500 1512000 -3969000 4410000;-2772 83160 -582120 1552320 -1746360];
y1=[463;-13860;97020;-258720;291060;-116424];
% vector y1
y2=[-4157;-17820;93555;-261800;288288;-118944];
% vector y2
x1=inv(A'*A)*A'*(y1); % inciso a

% se calcula x1 aplicando la pseudoinversa de la matriz A.


x2=inv(A'*A)*A'*(y2); % inciso b
% se calcula el vector de parmetros x2,
y3=A*x1; % Inciso c
% Se calcula el resultado de y3 utilizando los parmetros x1.
y4=A*x2; % inciso d
% Se calcula el resultado de y4 utilizando los parmetros x2.
x1
x2
y3
y4

Matriz A:
36
-630
3360
-7560
7560
-2772
Vector y1:
463
-13860
97020
-258720
291060
-116424
Vector y2:
-4157
-17820
93555
-261800
288288
-118944
a)
x1 =
1.0000
0.5000

-630
14700
-88200
211680
-220500
83160

3360
-88200
564480
-1411200
1512000
-582120

-7560
211680
-1411200
3628800
-3969000
1552320

7560
-220500
1512000
-3969000
4410000
-1746360

0.3333
0.2500
0.2000
b)
x2 =
1.0000
0.5000
0.3333
0.2500
0.2000
X1=X2. Son los mismos parmetros para ambos casos

c)
y3 =
1.0e+05 *
0.0046
-0.1386
0.9702
-2.5872
2.9106
-1.1642

d)
y4 =
1.0e+05 *
0.0046
-0.1386
0.9702
-2.5872
2.9106

-1.1642
Los vectores ya & yb son iguales, esto es lgico, ya que la matriz A es la misma y
los vectores parmetros x1 y x2 son iguales.

e)
Se puede observar una gran diferencia entre los valores de y1 & y3, as como
entre los valores de y2 & y4.

Minimos cuadrados ponderados


Resolver lo siguiente mediante mnimos cuadrados ponderados.
a) Dado Cyy1 & y1, calcular cyy1^(-1/2)
b) Dado Cyy2 & y2, calcular cyy2^(-1/2)
c) y1=Ax1
Calcular x1
d) y2=Ax2
Calcular x2
e) y1c=Ax1
Calcular y1c a partir de los parmetros x1 y la matriz A
f) y2c=Ax2
Calcular y1c a partir de los parmetros x2 y la matriz A
g) Observar las diferencias entre y1 & y1c, as como de y2 & y2c

clear all
close all
clc
a=load('a.txt');
% Se carga la matriz A del archivo original
y1=load('y1.txt'); m=length(y1);
% Se carga el vector y1
y2=load('y2.txt');
% Se carga el vector y2
cyy1=zeros(m); cyy2=zeros(m);

cyy1_r=zeros(m); cyy2_r=zeros(m);
y1p=zeros(m,1); y2p=zeros(m,1);
for i=1:m
cyy1(i,i)=0.005*y1(i);
cyy2(i,i)=0.005*y2(i);
cyy1_r(i,i)=1/sqrt((abs(cyy1(i,i)))); % 2_a
cyy2_r(i,i)=1/sqrt((abs(cyy2(i,i)))); % 2_a
y1p(i,1)=y1(i)*cyy1_r(i,i);
% y1p es y1', solo que no se pone de esta manera porque matlab lo
% podra confundir con la transpuesta. Se calcula multiplicando y1
% por el valor de cyy1_r.
y2p(i,1)=y2(i)*cyy2_r(i,i);
% y2p es y2', solo que no se pone de esta manera porque matlab lo
% podra confundir con la transpuesta. Se calcula multiplicando y2
% por el valor de cyy2_r.
end
% El ciclo for asigna los valores de cyy1 y cyy2 a partir de los valores de
% los vectores y1 y y2, para despus sacar el inverso de la raz de estos,
% que es cyy1_r y cyy2_r.
a1p=cyy1_r*a;
% Como en el mtodo se requiere de el valor de A2' y no de A, se calcula
% multiplicando A por cyy1_r,
a2p=cyy2_r*a;
% A2' se calcula multiplicando A por cyy2_r,
x1=inv(a1p'*a1p)*a1p'*(y1p); % 2_b
x2=inv(a2p'*a2p)*a2p'*(y2p); % 2_c
% Se calculan los vectores de parmetros x1 y x2
y1c=a*x1; % 2_d
y2c=a*x2; % 2_e
% Se evalan los vectores de parametros x1 y x2 con la matriz original A.
e1=y1c-y1; % 2_f
e2=y2c-y2; %2_f
% e1 y e2 son los errores entre los vectores calculados y los vectores
% con los que se parti.
Matriz A:
36
-630
3360
-7560
7560
-2772
Vector y1:

-630
14700
-88200
211680
-220500
83160

3360
-88200
564480
-1411200
1512000
-582120

-7560
211680
-1411200
3628800
-3969000
1552320

7560
-220500
1512000
-3969000
4410000
-1746360

463
-13860
97020
-258720
291060
-116424
Vector y2:
-4157
-17820
93555
-261800
288288
-118944
cyy
0.005*y(1
)
0,00E+00 0,00E+00 0,00E+00
0.005*y(2
0,00E+00 )
0,00E+00 0,00E+00
0.005*y(3
0,00E+00 0,00E+00 )
0,00E+00
0.005*y(4
0,00E+00 0,00E+00 0,00E+00 )

0,00E+00

0,00E+00

0,00E+00

0,00E+00
0.005*y(5
0,00E+00 0,00E+00 0,00E+00 0,00E+00 )

0
0.005*y(6
0,00E+00 0,00E+00 0,00E+00 0,00E+00 0,00E+00 )
a)
Cyy1_r
0.6572
0.0000
0.0000
0.0000
0.0000
0.0000

0.0000
0.1201
0.0000
0.0000
0.0000
0.0000

0.0000
0.0000
0.0454
0.0000
0.0000
0.0000

0.0000
0.0000
0.0000
0.0278
0.0000
0.0000

0.0000
0.0000
0.0000
0.0000
0.0262
0.0000

0.0000
0.0000
0.0000
0.0000
0.0000
0.0414

Cyy2_r
0.2193
0.0000
0.0000
0.0000
0.0000
0.0000
b)
x1 =

1.0000
0.5000
0.3333
0.2500
0.2000
c)
x2 =

1.0e+03 *
-3.5033
-1.2179
-0.5308
-0.2341
-0.0835
d)
y1c =

1.0e+05 *

0.0000
0.1059
0.0000
0.0000
0.0000
0.0000

0.0000
0.0000
0.0462
0.0000
0.0000
0.0000

0.0000
0.0000
0.0000
0.0276
0.0000
0.0000

0.0000
0.0000
0.0000
0.0000
0.0263
0.0000

0.0000
0.0000
0.0000
0.0000
0.0000
0.0410

0.0046
-0.1386
0.9702
-2.5872
2.9106
-1.1642
e)
y2c =

1.0e+05 *
-0.0396
-0.1708
0.9694
-2.5338
2.9664
-1.1581
f)
e1 =

-0.0000
-0.0000
0.0019
-0.0074
0.0101
-0.0045

e2 =

1.0e+03 *
0.2006
0.7372
3.3862
8.4232
8.3477
3.1311

Imagen 1. Grfica del error entre y1-y1c & y2-y2c

You might also like