Autor Tema: Algoritmo QR

0 Usuarios y 1 Visitante están viendo este tema.

26 Noviembre, 2013, 12:40 pm
Leído 1407 veces

Petra12

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 368
  • Karma: +0/-0
  • Sexo: Femenino
Hola, tenemos el siguiente ejercicio:

Sea \( \mathbb{R}\in{\mathbb{R}^{nxn}} \) una matriz triangular superior y \( S\in{\mathbb{R}^{nxn}} \) una matriz arbitraria. Sea \( A=\begin{bmatrix}{R}\\{S}\end{bmatrix} \).
Escribe un algoritmo en matlab que usando tranformaciones de Householder reduzca A a una matriz triangular superior. Dicho algoritmo no debe destruir en ningún paso los ceros que ya se encuentran en R y por lo tanto debe requerir menos operaciones que si se aplica directamente el algoritmo de Householder a A.

El algoritmo de Householder lo tenemos:
function [Q,R]=house(A)
[m,n]=size(A);
R=A;
Q=eye(m);
for k=1:n
    x=R(k:m,k);
    t=size(x);
    e=zeros(1,t(1));
    e(1)=1;
    u=sign(x(1))*norm(x,2)*e'+x;
    u=u/norm(u,2);
    R(k:m,k:n)=R(k:m,k:n)-2*u*u'*R(k:m,k:n);
    Q(:,k:m)=Q(:,k:m)-2*Q(:,k:m)*u*u';
    if R(k,k)<0;
        R(k,k:n)=-R(k,k:n);
        Q(:,k)=-Q(:,k);
    end
end

¿Cómo tenemos que modificar este algoritmo para realizar el ejercicio?
Muchas gracias