向量到矩阵的列空间的投影由给出。从Moore-Penrose Inverse 的定义我们知道。
下面是实现将随机向量投影到随机矩阵空间的代码。这与我的另一个问题Backward stable algorithm to get正交投影到矩阵的列空间有关。我没有得到那个问题的答案。
我想知道为什么两种计算投影的方法之间存在巨大差异。
% testingprojfrostackexchange
clear;
M = 1400;
N = 1300;
r = 1;
A = rand(M,N);
u = rand(M,r);
projLN = pinv(A')*(A'*u);%This is projection through Least Norm
projLS = A*(pinv(A)*u);%This is projection through Least Square
[Q R] = qr(A);
Q = Q(:,1:N);
z1 = Q*(Q'*u);%This is the actual projection
display('(projection through QQT) - projLS');
norm(z1-projLN)/norm(projLN)
display('(projection through QQT) - projLN');
norm(z1-projLS)/norm(projLS)
输出
>> stackexchange
(projection through QQT) - projLS
ans =
2.1569e-13
(projection through QQT) - projLN
ans =
8.3546e-15
给出的实际投影,其中来自的 Housholder 分解。我们从和得到投影,发现是高矩阵更好。