- Increase sigma if an error or warning about the matrix being close to singular is displayed.
- Decrease sigma if the returned eigenvalue is too far away from zero (some small round-off error is to be expected).
Using eigs with singular matrix
20 views (last 30 days)
Show older comments
Alexander Holmes
on 5 Feb 2020
Answered: Christine Tobler
on 5 Feb 2020
I want to calculate the eigenvector corresponding to the 0 eigenvalue of a large, sparse singular matrix. However, if I try eigs(A,1,'smallestabs'), MATLAB has an issue due to it being singular. For smaller matrices, eig works fine, but I need something that will owrk with larger matrices. Is there any way I can get eigs to work with this?
0 Comments
Accepted Answer
Christine Tobler
on 5 Feb 2020
The 'smallestabs' option in eigs depends on solving several linear systems with the matrix A that's being passed in. If A is singular, that's not possible.
The best option is probably to instead pass in a very small sigma: eigs(A, 1, sigma). For example, you could set sigma=1e-2, this depends on A. Now eigs will compute the eigenvalue closest to sigma by solving several linear systems with the matrix A - sigma*speye(size(A)). You might need to adjust sigma:
To decrease the risk of having to call eigs again with a different sigma, you could compute several eigenvalues and choose the one closest to zero.
On a different not, instead of changing the way you're calling eigs, since you're looking for the eigenvalue zero you could also call svds with the 'smallest' option, because a singular vector with singular value zero is also an eigenvector with eigenvalue zero.
0 Comments
More Answers (0)
See Also
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!