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