5

For a system of equations

$$ \begin{bmatrix}d_1 & d_2 & \dots & d_n \end{bmatrix} \begin{bmatrix}u_1\\u_2\\ \vdots \\ u_n \end{bmatrix} = d_{n+1} $$

where each $d$ is a column of (possibly noisy) data and each $u$ is a scalar unknown, is the correct approach to call this $Ax=b$ and solve as $x = A\setminus b$, or to rearrange it into an $Ax=0$ form as below,

$$ \begin{bmatrix}d_1 & d_2 & \cdots & d_n & d_{n+1}\end{bmatrix} \begin{bmatrix}u_1\\u_2\\ \vdots \\ u_n \\ -1\end{bmatrix} = 0 $$

using SVD to find the vector of unknowns, then normalizing by its final element? In matlab these give different answers, but I don't know if the difference is in noise or implementation or if there's some theory that I'm missing.

1 Answers1

3

I see nothing inherently wrong with the technique, so perhaps it is the "noise" that's causing the problem. Matlab returns the same thing for both approaches for me:

A = randn(3);
b = randn(3,1);
x1 = A\b;
nullAb = null([A b]);
x2 = nullAb(1:3)/(-nullAb(end));
disp(x1-x2); % returns something on the order of machine precision

If the noise is simulation-generated, try eliminating it to see if you get the right answer.

brd
  • 480