Preserving positive-definiteness after thresholding and inversion

조회 수: 1 (최근 30일)
firdaus
firdaus 2013년 5월 19일
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

답변 (1개)

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

카테고리

Help CenterFile Exchange에서 Linear Algebra에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by