Why is this matrix bad conditioned?

  • Context: Graduate 
  • Thread starter Thread starter divB
  • Start date Start date
  • Tags Tags
    Matrix
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
4 replies · 2K views
divB
Messages
85
Reaction score
0
Hi,

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

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

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
 
Physics news on Phys.org
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.
 
hotvette said:
Please clarify a couple of points:

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

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

[tex] \mathbf{U} = \left[\begin{matrix}<br /> x(3) & x(3)^2 & x(3)^3 & x(2) & x(2)^2 & x(2)^3 & x(1) & x(1)^2 & x(1)^3\\<br /> x(4) & x(4)^2 & x(4)^3 & x(3) & x(3)^2 & x(3)^3 & x(2) & x(2)^2 & x(2)^3\\<br /> x(5) & x(5)^2 & x(5)^3 & x(4) & x(4)^2 & x(4)^3 & x(3) & x(3)^2 & x(3)^3\\<br /> x(6) & x(6)^2 & x(6)^3 & x(5) & x(5)^2 & x(5)^3 & x(4) & x(4)^2 & x(4)^3\\<br /> \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots \\<br /> 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\\<br /> \end{matrix}\right][/tex]

with N>>3.

hotvette said:
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.

It means the latter. [itex]x(n)[/itex] 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
 
divB said:
in Engineering papers I found Vandermonde matrices which are just solved "by the MATLAB backslash operator" (Moore Penrose pseudo inverse).
Thanks

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.
 
AlephZero said:
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?

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.