You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
RectangularMatrix.SingularValueDecomposition throws:
Meta.Numerics.NonconvergenceException : The algorithm did not converge within the allowed number of iterations.
For slightly different matrix:
44.6667 -391.9633 -66.0000
-391.9633 3487.4401 503.8801
-66.0000 503.8801 216.0001
it converges.
Is it not so that a SVD exists for EACH matrix?
The text was updated successfully, but these errors were encountered:
It is true that SVD exists for all matrices. It is also thinkable that our algorithm to compute it could fail with a NonconvergenceException, since the algorithm we use (which is quite standard) is iterative and relies on numerical convergence. However, for the values you quote, I am unable to reproduce the described behavior. The following code executes for me without any exception, and produces a working SVD:
RectangularMatrix M = new RectangularMatrix(new double[,] {
{ 44.6667, -392.0000, -66.0000 },
{ -392.0000, 3488.0000, 504.0001 },
{ -66.0000, 504.0001, 216.0001 }
});
//M = M.Transpose;
SingularValueDecomposition S = M.SingularValueDecomposition();
Note that I also tried with the transpose, in case we disagreed about column vs row ordering.
Hi dcwuser, thanks for your reply. Unfortunately, it is a bit ago that I encountered the situation and, afaik, i implemented SVD from some different library at that place which behaved more robustly with these data. I cannot reproduce all of it right now, but I will try to when I am back in office.
For the following matrix:
44.6667 -392.0000 -66.0000
-392.0000 3488.0000 504.0001
-66.0000 504.0001 216.0001
RectangularMatrix.SingularValueDecomposition throws:
Meta.Numerics.NonconvergenceException : The algorithm did not converge within the allowed number of iterations.
For slightly different matrix:
44.6667 -391.9633 -66.0000
-391.9633 3487.4401 503.8801
-66.0000 503.8801 216.0001
it converges.
Is it not so that a SVD exists for EACH matrix?
The text was updated successfully, but these errors were encountered: