mxn 行列を取得し、QR で分解するプログラムを作成しようとしています。
まだ終わっていませんが、問題が発生しました。ウィキペディアhttp://en.wikipedia.org/wiki/QR_decompositionに示されている例でプログラムを実行してみました
A=[12,-51,4;6,167,-68;-4,24,-41]
彼らが Q1、Q2 と呼んだもの...私は Qtemp と呼びました。Qtempを計算するたびに、ウィキペディアと同じ結果が得られることを確認するために印刷します。Q1 はしますが、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
私は文字通り彼らのアルゴリズムをコピーしてコードに変換しましたが、それでも 2 番目の Qtemp の出力は良くありません。