Preserving positive-definiteness after thresholding and inversion
Show older comments
Hello,
I'm observing some unexpected behavior in matlab after the following steps:
a) start with a non-definite symmetric matrix X (of n >= 10)
b) do an eigen decomposition of X and set all negative eigenvalues to 0
c) reconstruct X_hat and X_hat_inverse - which should be positive semi-definite.
d) check the eigenvalues of X_hat and X_hat_inverse
Both these matrices sometimes turn out to have negative (albeit very small) values !
Here's some code for that:
X = rand(1000,10);
X = X'*X/1000;
eig(X) % all positive
X(X(:)<0.25) = 0 % no longer psd
[uu_,dd_] = eig(X);
dd_( dd_(:)<0 ) = 0;
X_hat = uu_*dd_*uu_';
X_hat_inv = uu_*pinv(dd_)*uu_';
eig(X_hat) %negative e.v.s !!
eig(X_hat_inv) % complex e.v.s !!!
are these acceptable numerical errors - or is something wrong ?
Thanks -fj
Answers (1)
the cyclist
on 19 May 2013
0 votes
The numerical errors here are exactly of the magnitude I expect. You can use the eps() function to help gauge that error.
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!