# Re: [R] spectral decomposition for near-singular pd matrices

From: Moshe Olshansky <m_olshansky_at_yahoo.com>
Date: Wed, 16 Jul 2008 17:05:11 -0700 (PDT)

If your matrix is not very small and the lower eigenvalues are clustered, this may be a really hard problem! You may need a special purpose algorithm and/or higher precision arithmetic. If your matrix is A and there exists a sequence of matrices A1,A2,...An = A such that A1 is "good", A2 is a bit worse (and is not very different from A1), etc., you may be able to compute the eigensystem for A1 and then track it down to A2, A3,...,An. I have worked on such problems some 15 years ago but I believe that by now there should be packages doing this (I do not know whether they exist in R).

• On Thu, 17/7/08, Prasenjit Kapat <kapatp_at_gmail.com> wrote:

> From: Prasenjit Kapat <kapatp_at_gmail.com>
> Subject: [R] spectral decomposition for near-singular pd matrices
> To: r-help@stat.math.ethz.ch
> Received: Thursday, 17 July, 2008, 7:27 AM
> Hi,
>
> I have a matrix M, quite a few (< 1/4th) of its eigen
> values are of
> O(10^-16). Analytically I know that M is positive definite,
> but
> numerically of course it is not. Some of the small
> (O(10^-16)) eigen
> values (as obtained from eigen()) are negative. It is the
> near-singularity that is causing the numerical errors. I
> could use
> svd(), but then the left (\$u) and right (\$v) vectors are
> not
> identical, again numerical errors. Is there any function
> that imposes
> pd property while calculating the eigen decomposition.
>
> Thanks,
> PK
>
> ______________________________________________
> R-help_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help