?? house1.m
字號:
function [W, T] = House1(A)
% Compute the Householder transformation T A = [ W ; 0 ] where A is a given
% 2n x n matrix, and T is an orthogonal 2n x 2n matrix, and W is an n x n
% matrix.
n = size(A,2);
if size(A,1) ~= 2*n then
disp('A must be a 2n x n matrix');
return
end
T = eye(2*n);
for k = 1 : n
temp = 0;
for i = k : 2*n
temp = temp + A(i,k)^2;
end
signAkk = sign(A(k,k));
if (signAkk == 0)
signAkk = 1;
end;
sigma = signAkk * sqrt(temp);
if abs(sigma) < 100 * eps
disp('The input matrix is not full rank');
return;
end
beta = 1 / sigma / (sigma + A(k,k));
u = zeros(2*n, 1);
u(k) = sigma + A(k,k);
for i = k+1 : 2*n
u(i) = A(i,k);
end
y = zeros(n, 1);
y(k) = 1;
for i = k+1 : n
y(i) = beta * u' * A(:, i);
end
A = A - u * y';
T = (eye(2*n) - beta * u * u') * T;
end
W = A(1:n, 1:n);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -