Documente Academic
Documente Profesional
Documente Cultură
Autónoma de Honduras
Valle de Sula
MM-423
Tarea de Laboratorio # 5
Catedrático:
Dr. Fredy Vides
2 de agosto de 2020
1. Ejercicio 9
Aplicar HouseFactor.m o una versión más eficiente desarrollada por usted, para desarrollar
un programa Octave que permita calcular la descomposición QR de una matriz X ∈ Rmxn con
columnas linealmente independientes.
Para la obtención de la factorización QR, se realizaron tres funciones en octave para generar
las matrices deseadas.
Hallamos un vector u que define la matriz Householder y un valor constante σ, esto con el
programa house1.m.
%=========================================================================
% Crea ceros en un vector usando una matriz Householder
% Define la matriz Householder H y un valor sigma tal que
% Hx = [ sigma , 0 , .... , 0] ’.
%==========================================================================
function A = house2 (A , u )
[ m1 , n ] = size ( A ) ;
beta = 2/( u ’* u ) ;
for i = 1 : m1
m = 0;
m = m + u (1: n ) * A (i ,1: n ) ;
m = beta * m ;
A (i ,1: n ) = A (i ,1: n ) - ( m * u (1: n ) ) ’;
end ;
end
El programa principal para la factorización QR se muestra a continuación, en el cual se
obtiene la matriz ortogonal Q y la matriz triangular superior R.
%===========================================================================
function [Q ,R , t ] = QRhouse ( A )
tic () ;
[m , n ] = size ( A ) ;
S = min (n ,m -1) ;
Q = eye (m , m ) ;
for k = 1 : S
[x , sigma ] = house1 ( A ( k :m , k ) ) ;
Q (1: m , k : m ) = house2 ( Q (1: m , k : m ) ,x ) ;
A (k , k ) = sigma ;
n1 = size ( x ) ;
A ( k +1: m , k ) = x (2: n1 ) ;
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
Al ejecutar el programa, la ventana de comandos muestra en pantalla:
Se puede ver, que los eigenvalores de la matriz, coinciden con los obtenidos de la matriz obtenida
por el producto de RQ. Se muestra la diferencia entre los valores obtenidos con el comando eig()
para la matriz A y para la construcción de A, a través del producto RQ.