私はwikiの公式に従います:
http://en.wikipedia.org/wiki/Pseudo_inverse
疑似逆数を計算しますが、正しい結果を受け取ることができません。theta
例:方程式を見つけたい: Y=R*theta
、私はmatlabに書いています:
R = -[1/sqrt(2) 1 1/sqrt(2) 0;0 1/sqrt(2) 1 1/sqrt(2);-1/sqrt(2) 0 1/sqrt(2) 1];
% R is 3x4 matrix
Y = [0; -1/sqrt(2);-1]; %Y is 3x1 matrix
B1 = pinv(R);
theta1 = B1*Y;
result1 = R*theta1 - Y
B2 = R'*inv(R*R');
theta2 = B2*Y;
result2 = R*theta2 - Y
これが結果です。
result1 =
1.0e-15 *
-0.1110
-0.2220
-0.2220
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.904842e-17.
> In pseudoinverse at 14
result2 =
0.1036
-0.1768
-0.3536
明らかに、 theta2 は間違った答えですが、その方法と理由はわかりません。私は多くの本を読み、wikiと同じ公式を教えてくれます。手で疑似逆を行うのを手伝ってくれる人はいますか? ありがとう !