# Why is this matrix bad conditioned?

1. ### divB

88
Hi,

From a paper I got a matrix like this which I use to solve the over-determined system $\mathbf{z} = \mathbf{U} \mathbf{a}$:

$$\mathbf{U} = \left[\begin{matrix} x(3) & x(3)^2 & x(3)^3 & x(2) & x(2)^2 & x(2)^3 & x(1) & x(1)^2 & x(1)^3\\ x(4) & x(4)^2 & x(4)^3 & x(3) & x(3)^2 & x(3)^3 & x(2) & x(2)^2 & x(2)^3\\ x(5) & x(5)^2 & x(5)^3 & x(4) & x(4)^2 & x(4)^3 & x(3) & x(3)^2 & x(3)^3\\ x(6) & x(6)^2 & x(6)^3 & x(5) & x(5)^2 & x(5)^3 & x(4) & x(4)^2 & x(4)^3\\ \end{matrix}\right]$$

However, in my experiments I found that this matrix is very unstable and has high condition numbers. No matter which "signal" x I plug into, even if the x are drawn from a Gaussian distribution.

Can anyone tell me why this matrix is so unstable or if I am doing something wrong?

The crazy thing is that the paper suggests the algorithm works without any problems (using the same parameter set) but I just can't reproduce this ...

Thanks,
div

2. ### hotvette

931
Please clarify a couple of points:

1. Do you really mean under-determined? Over-determined means more rows than columns.

2. Does x(3)3 mean x * (33) or (x3)3? If the former, it means x is a scale factor for the entire matrix. If the latter, it means the matrix is generated from 6 values.

3. ### divB

88
Sorry, I was not clear enough. It is indeed over-determined. Better clarification:

$$\mathbf{U} = \left[\begin{matrix} x(3) & x(3)^2 & x(3)^3 & x(2) & x(2)^2 & x(2)^3 & x(1) & x(1)^2 & x(1)^3\\ x(4) & x(4)^2 & x(4)^3 & x(3) & x(3)^2 & x(3)^3 & x(2) & x(2)^2 & x(2)^3\\ x(5) & x(5)^2 & x(5)^3 & x(4) & x(4)^2 & x(4)^3 & x(3) & x(3)^2 & x(3)^3\\ x(6) & x(6)^2 & x(6)^3 & x(5) & x(5)^2 & x(5)^3 & x(4) & x(4)^2 & x(4)^3\\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\ x(N) & x(N)^2 & x(N)^3 & x(N-1) & x(N-1)^2 & x(N-1)^3 & x(N-1) & x(N-1)^2 & x(N-1)^3\\ \end{matrix}\right]$$

with N>>3.

It means the latter. $x(n)$ is a sequence where n is the nth value of the sequence.

It appears that this matrix has a similar structure than a Vandermonde but not quite.

Vandermonde matrices seem to have high condition numbers and to be instable. Yet, they seem to be used quite frequently, also in Engineering papers I found Vandermonde matrices which are just solved "by the MATLAB backslash operator" (Moore Penrose pseudo inverse).

Thanks

4. ### AlephZero

7,299
AFAK the MATLAB backslash operatior is not the same as the Moore pensore psendo inverse. http://www.mathworks.co.uk/help/matlab/ref/arithmeticoperators.html

But the QR method MATLAB uses should be work pretty well for that type of matrix. Are you trying to solve it that way, or doing something else?

Forming the normal equations by doing ##U^Tz = U^T U a## and then solving for ##a## would be an ill-conditioned disaster, unless N is small.

5. ### divB

88
I know.

I used pinv(U)*z as well as U \ z.

The thing is that in some publications it is even (implicitely) stated that they solved with the backslash operator.