Preserving positive-definiteness after thresholding and inversion

1 Ansicht (letzte 30 Tage)
firdaus
firdaus am 19 Mai 2013
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

Antworten (1)

the cyclist
the cyclist am 19 Mai 2013
The numerical errors here are exactly of the magnitude I expect. You can use the eps() function to help gauge that error.

Kategorien

Mehr zu Linear Algebra finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by