Posted Saturday, August 19, 2006 3:16 PM
|
|
|
|
I've got a square matrix, about 500x500 that is non positive definite. Trying to fix this, I perform the following steps:
1) perform eigenvalue decomposition
2) a form of ridge regularization - bring all real eigenvalues below a certain threshold up to that threshold
3) recompose matrix via real_eig_vecs*new_eig_vals*real_eig_vecs'
4) perform eigenvalue decomposition on new matrix
Now, even though the original matrix had no complex eigenvalues or eigenvectors, the new matrix has quite a few (on the order of 1e-15). It seems to me that this should not happen, given that the inputs to the recomposition were entirely real. Besides that,the fact that the complex parts of the eigenvalues are so small indicates to me a potential rounding type issue.
Am I incorrect, and is this behavior acceptable, or is it truly anomolous? I appreciate any guidance anyone can provide.
|
|
Posted Monday, August 21, 2006 12:01 AM
|
|
|
|
Hello,
If the complex part of eigenvalues and eigenvectors is in the order of 1e-15 I would suggest that you ignore or zero their complex part and proceed without it.
This range (1e-15) is in the limit of the machine accuracy for floating point operations and cannot be improoved.
Trifon Triantafillidis | Lead Developer |
|
|
|
Posted Tuesday, August 22, 2006 8:07 AM
|
|
|
|
Trifon
I'm well aware that the number is so small as to be inconsequential to me. However, I'm concerned that the matrix will deemed not positive definite due to those inconsequential complex parts.
Andrew
|
|
|
|