Re: Solving a highly ill-conditioned linear problem




In article <1139465511.324430.53930@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>,
"anaemic1" <ramakrishnan.parthasarathy@xxxxxxxxx> writes:
Hello,

I guess this is a usual question but I have a MATLAB Ax=b problem where
A is a matrix generated from the eigenvalues/ vectors of another
matrix, which is conditioned well (rcond >eps). A is around 5000 X
5000, complex, has its first half filled with values from the other
matrix, and the other half has very few non-zero values (is mostly
zeros). It is not suprising that the condition number for A is very
high (I was able to reduce rcond to 1e-122 but still
it is impossibly huge due to the massive differences between the
individual non-zero numbers and the zeros in the second half, esp.on
half the diagonal). I've literally tried everything but cannot improve
the condition number beyond that. I've also tried 'svd' with tolerance
levels but to no avail. There is a check on the validity of my answer,
which is - total energy = 100% conserved. Surprisingly, this is true
whenever I use linsolve in spite of the unreliable condition number. I
suspect this might be due to the higher modes carrying more energy than
the lower ones.

Another issue is "OUT OF MEMORY". Although I can recover variables
using 'pack' and still complete the program run, I'm sure it will run
out of steam after I increase the matrix size to a certain extent. The
amazing thing is the program is way faster with linsolve i.e full
matrices rather than sparse ones.

I have not used other sparse solvers/ preconditioners like Super LU,
LINPAR, PARASAILS etc. yet and would definitely appreciate help from
anyone with expertise in these issues or with solvers having the
capability to tackle ill-conditioned problems. Are there any kind of
preconditioner/ scaling codes or do I have to change my system
equations/ order?

Thanks and best regards,
Rama


a condition number of 1e-122 computed in IEEE double???
that means singular as can be.
depending on the right hand side a LU-solver may nevertheless compute
a senseful solution, and, remember, Gauss with pivoting always results in
a "small" residual. Hence some properties of your problem might be conserved
even with a completely false solution.
it is no much wonder that a sparse solver becomes slow since from your
description I conclude that the upper n/2 rows are full: now think in matrix
blocks of a LU decomposition, then you have
[ A11 A12 ] [ I O ] [ A11 A12 ]
[ A21 A22 ] = [ A21*inv(A11) I ] [ O A22 - A21*inv(A11)*A12 ]
then the right hand lower block in R will also be full.
then the organisational overhead in sparse matrix mode will outweigh any savings.
concerning your problem with "out of memory" might be that automatic
swapping preserves the process.
anyway:
you clearly must think earnestly about a complete reformulation of your problem.

hth
peter
.