matlab中qr分解算法的误差



我应该使用Matlab实现QR因子分解,然后在矩阵A=[1 2;1 1;2 3;2 2]上进行测试。这是我一直试图写的代码。但我犯了一些错误,我不确定问题出在哪里。有人能发现吗?

A = [1 2; 1 1; 2 3; 2 2];
m = 4
Q=A;
Q(:,1) = A(:,1)/norm(A(:,1));
K = eye(m);
for j=2:n 
Q(:,j) = ((K - Q(:,j-1)*Q(:,j-1)')*A(:,j))/norm((K - Q(:,j-1)*Q(:,j-1)')*A(:,j));
K = K - Q(:,j-1)*Q(:,j-1)';
end
R=Q'*A;

你的for循环从2:n运行,但你还没有定义n。你只需要用定义n

A = [1 2; 1 1; 2 3; 2 2];
[m,n] = size(A);

当我添加时,我可以评估Q*R并获得

>> Q*R
ans =
    1.0000    2.0000
    1.0000    1.0000
    2.0000    3.0000
    2.0000    2.0000

注意,以这种方式定义m,n可以使您泛化为使用任何矩阵A(假设m>=n)。