Gramm Schmidt QR分解不能正确返回Q和R.

时间:2016-04-30 17:24:08

标签: matlab octave matrix-inverse

我已经为Gramm-Schmidt QR分解实现了MATLAB功能。 Q的倒数应该等于它的倒数,但它不是,我不明白为什么。我甚至试过别人的功能,这是相同的,结果是一样的。这是我的功能:

      A
    /   \
   B     C
    \   /
      D

`

1 个答案:

答案 0 :(得分:0)

首先,我认为你的意思是Q的共轭转置应该等于它的反向,即它是单一的矩阵。

其次,是什么让你认为你的函数返回的Q不是单一的?我们来看看。

A = randn(20,20);
[Q, R] = gramschmidt(A);

diff = @(X,Y) max(abs(X(:)-Y(:)));  % element-wise max abs difference
diff(Q'*Q, eye(size(A)))
ans =
   1.7764e-15

正如您所看到的,它具有非常好的精确度。

另外,为了以防万一,Matlab有一个内置且高效的qr函数来执行这种分解,它也可以处理矩形矩阵,而不仅仅是像实现一样的方形矩阵。