我正在尝试编写一个获取 mxn 矩阵并 QR 分解它的程序。
它还没有完成,但我遇到了一个问题。我尝试使用 wikipedia http://en.wikipedia.org/wiki/QR_decomposition中显示的示例运行我的程序
A=[12,-51,4;6,167,-68;-4,24,-41]
他们所谓的 Q1、Q2 ......我称之为 Qtemp。每次我计算 Qtemp 时,我都会打印它以查看我得到与维基百科相同的结果。对于 Q1 我会,但对于 Q2 我不会。
他们的 Q2 和我的 Q2 值相同,但符号不同。他们有一个+我有一个-,他们有一个-,我有一个+。
这是我的代码:
Q=eye(m);
R=A;
for i=1:min(m-1,n)
ei=zeros(n,1);
ei(i,1)=1;
x=A(:,i);
for j=1:i-1
x(j,1)=0;
end
u=x-norm(x)*ei;
v=u/norm(u);
Qtemp=eye(m)-2*(v*v');
A=Qtemp*A;
disp(Qtemp);
end
我实际上只是复制了他们的算法并将其转换为代码,但第二个 Qtemp 的输出仍然很糟糕。