Sunteți pe pagina 1din 4

Facultad de Matemáticas

Álgebra Lineal Numérica

Laboratorio 5

Catedratico:
Dr. Freddy Vides

Alumno:
Wilfredo Ebanks

Cuenta:
20142002814

Agosto 2020
Practica
Ejercicio 9: Aplicar HouseFactor.m o una versión más eficiente desarrollada por usted, para
desarrollar un programa en Octave que permita calcular la descomposición QR de una matriz
X ∈ Rmxn con columnas linealmente independientes.
Para encontrar la factorización QR, se hicieron tres funciones en octave para generar las ma-
trices. Encontramos un vector v que define la matriz Householder y un valor constante σ, esto
con el programa HouseHoulder1.m.
Codigo
function [v, sigma ] = HouseHoulder1(x)
[m,n] = size (x);
mm = max(abs(x));
x = x/mm;
t = sign (x (1) );
if t == 0
t = 1;
end ;
sigma = t * norm (x ,2) ;
v = x + sigma * eye (m ,1) ;
sigma = -mm * sigma ;
end
Suponemos que el valor de aii = σ. Hacemos uso luego del programa HouseHoulder2.m, para
calcular el producto de AH, donde H es una matriz Householder generada por un vector v,
donde La matriz resultante A contiene el producto AH.
Codigo
function A = HouseHoulder2(A,v)
[m1 ,n] = size (A) ;
b = 2/(v’*v);
for i = 1 : m1
m = 0;
m = m + v(1: n) * A(i ,1: n);
m = b * m;
A(i ,1:n) = A(i ,1:n) - (m*v (1: n))’;
end ;
end
Codigo de la factorización QR, en el cual se obtiene la matriz ortogonal Q y la matriz triangular
superior R.
function [Q,R,t] = QRHouseHoulder(A)
tic () ;
[m,n] = size (A) ;
S= min (n,m -1) ;
Q = eye(m,m) ;
for k = 1 : S
[x, sigma ] = HousHolder1 (A(k:m,k) ) ;
Q (1:m,k:m) = HousHolder2 (Q(1:m,k:m) ,x) ;
A(k,k) = sigma ;
n1 = size (x) ;
A(k +1:m,k) = x(2: n1) ;

1
v(k) = x (1) ;
beta = 2/(x’*x);
for j = k+1:n
r = 0;
r = r + x(1:m-k+1)’ * A(k:m,j) ;
r = beta * r;
A(k:m,j) = A(k:m,j) - r * x (1:m-k +1) ;
end ;
end ;
R = triu (A) ;
t= toc () ;
end
Ventana de Salida
>> A = [5 0 1 2;0 5 2 1;0 1 5 2;0 1 2 5]
A =

5 0 1 2
0 5 2 1
0 1 5 2
0 1 2 5

>> [Q,R,t] = QRHouseHolder(A)


Q =

-1.00000 0.00000 0.00000 0.00000


0.00000 -0.96225 0.24315 -0.12227
0.00000 -0.19245 -0.92555 -0.32606
0.00000 -0.19245 -0.29022 0.93741

R =

-5.00000 0.00000 -1.00000 -2.00000


0.00000 -5.19615 -3.27165 -2.30940
0.00000 0.00000 -4.72190 -3.05904
0.00000 0.00000 0.00000 3.91267

t = 0.50706
Podemos apreciar que los eigenvalores de la matriz, coinciden con los obtenidos de la matriz
obtenida por el producto de QR. Se muestra la diferencia entre los valores obtenidos para la
matriz A y para la construcción de A, a través del producto QR
>> eig(A)
ans =

5.0000
4.0000
8.0000
3.0000
>> eig(Q*R)

2
ans =

5.0000
4.0000
8.0000
3.0000

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