[ 
https://issues.apache.org/jira/browse/MATH-327?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12915656#action_12915656
 ] 

Luc Maisonobe commented on MATH-327:
------------------------------------

Checking again this issue with current version in branch 2.X on subversion 
repository.
Using the original low accuracy values and making sure we simply have two 
different rows, I get the two largest singular values 30.157767108847384 and 
0.2709545346259456, a large set of 0 values and a last non null values at 
3.547702387229884E-7.
Reconstructing the matrix from its decomposition and subtracting the initial 
matrix gives a norm of 7.9e-7.

I suspect there are numerical problems here, enhanced by the large number of 
identical rows and initial low accuracy of the numbers in the issue report.
The current implementation of SVD uses directly A.At and At.A (where t is the 
transpose) and eigen decomposition. I think in this case lots of precision is 
lost. I would be happy with singular values and reconstruction errors at about 
1.0e-10 or something like that, but a result larger than 1.0e-7 seems a real 
problem to me.

>  Maximal number of iterations (540) exceeded
> --------------------------------------------
>
>                 Key: MATH-327
>                 URL: https://issues.apache.org/jira/browse/MATH-327
>             Project: Commons Math
>          Issue Type: Bug
>         Environment: Windows 7 (32-bit)  JDK 1.6_16
>            Reporter: Mansoor Ahmed Khan
>            Priority: Critical
>             Fix For: 2.2
>
>
> I have a matrix of size 49x19 and when I apply SVD on this matrix it raises 
> the following exception. The problem which I am facing is that SVD works for 
> some matrix and doesn't work for others. I have no clue what is the possible 
> reason.
> Exception::
> CorrespondenceAnalysis: 
> org.apache.commons.math.MaxIterationsExceededException: Maximal number of 
> iterations (540) exceeded 
> [org.apache.commons.math.linear.EigenDecompositionImpl.processGeneralBlock(EigenDecompositionImpl.java:881),
>  
> org.apache.commons.math.linear.EigenDecompositionImpl.findEigenvalues(EigenDecompositionImpl.java:651),
>  
> org.apache.commons.math.linear.EigenDecompositionImpl.decompose(EigenDecompositionImpl.java:243),
>  
> org.apache.commons.math.linear.EigenDecompositionImpl.<init>(EigenDecompositionImpl.java:202),
>  
> org.apache.commons.math.linear.SingularValueDecompositionImpl.<init>(SingularValueDecompositionImpl.java:114),
> RealMatrix m = [[1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 1.00000000, 
> 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 
> 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 
> 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 
> 0.99107143, 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 
> 1.00000000, 0.94999999, 0.95833331, 1.00000000, 1.00000000, 0.99107143, 
> 0.94583333, 1.00000000, 0.95000000, 0.98333333, 0.92106681, 0.97368419, 
> 1.00000000, 0.95357142, 0.95238096, 1.00000000, 0.93333334, 
> 0.96428573],[1.00000000, 1.00000000, 0.94999999, 0.95833331, 1.00000000, 
> 1.00000000, 0.99107143, 0.94583333, 1.00000000, 0.95000000, 0.98333333, 
> 0.92106681, 0.97368419, 1.00000000, 0.95357142, 0.95238096, 1.00000000, 
> 0.93333334, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 
> 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 
> 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 
> 0.99107143, 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 
> 1.00000000, 0.94999999, 0.95833331, 1.00000000, 1.00000000, 0.99107143, 
> 0.94583333, 1.00000000, 0.95000000, 0.98333333, 0.92106681, 0.97368419, 
> 1.00000000, 0.95357142, 0.95238096, 1.00000000, 0.93333334, 
> 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 1.00000000, 
> 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 
> 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 0.94999999, 
> 0.95833331, 1.00000000, 1.00000000, 0.99107143, 0.94583333, 1.00000000, 
> 0.95000000, 0.98333333, 0.92106681, 0.97368419, 1.00000000, 0.95357142, 
> 0.95238096, 1.00000000, 0.93333334, 0.96428573],[1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 
> 0.99107143, 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 
> 1.00000000, 0.99107143, 0.95238096, 1.00000000, 1.00000000, 
> 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 1.00000000, 
> 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 
> 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 
> 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 
> 0.94999999, 0.95833331, 1.00000000, 1.00000000, 0.99107143, 0.94583333, 
> 1.00000000, 0.95000000, 0.98333333, 0.92106681, 0.97368419, 1.00000000, 
> 0.95357142, 0.95238096, 1.00000000, 0.93333334, 0.96428573],[1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 
> 1.00000000, 0.99107143, 0.95238096, 1.00000000, 1.00000000, 
> 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 1.00000000, 
> 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 
> 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 
> 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 
> 0.99107143, 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 
> 1.00000000, 0.99107143, 0.95238096, 1.00000000, 1.00000000, 
> 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 1.00000000, 
> 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 
> 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 0.94999999, 
> 0.95833331, 1.00000000, 1.00000000, 0.99107143, 0.94583333, 1.00000000, 
> 0.95000000, 0.98333333, 0.92106681, 0.97368419, 1.00000000, 0.95357142, 
> 0.95238096, 1.00000000, 0.93333334, 0.96428573],[1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 
> 0.99107143, 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 
> 1.00000000, 0.99107143, 0.95238096, 1.00000000, 1.00000000, 
> 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 1.00000000, 
> 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 
> 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 0.94999999, 
> 0.95833331, 1.00000000, 1.00000000, 0.99107143, 0.94583333, 1.00000000, 
> 0.95000000, 0.98333333, 0.92106681, 0.97368419, 1.00000000, 0.95357142, 
> 0.95238096, 1.00000000, 0.93333334, 0.96428573],[1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 
> 0.99107143, 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 
> 1.00000000, 0.99107143, 0.95238096, 1.00000000, 1.00000000, 
> 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 1.00000000, 
> 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 
> 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 
> 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 
> 0.99107143, 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 
> 1.00000000, 0.99107143, 0.95238096, 1.00000000, 1.00000000, 
> 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 1.00000000, 
> 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 
> 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 
> 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 1.00000000, 
> 0.99107143, 0.95238096, 1.00000000, 1.00000000, 0.96428573],[1.00000000, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.99107143, 
> 1.00000000, 1.00000000, 1.00000000, 1.00000000, 0.94450431, 1.00000000, 
> 1.00000000, 0.99107143, 0.95238096, 1.00000000, 1.00000000, 
> 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 1.00000000, 
> 1.00000000, 0.96428573],[1.00000000, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 1.00000000, 0.99107143, 1.00000000, 1.00000000, 1.00000000, 
> 1.00000000, 0.94450431, 1.00000000, 1.00000000, 0.99107143, 0.95238096, 
> 1.00000000, 1.00000000, 0.96428573],[1.00000000, 1.00000000, 0.94999999, 
> 0.95833331, 1.00000000, 1.00000000, 0.99107143, 0.94583333, 1.00000000, 
> 0.95000000, 0.98333333, 0.92106681, 0.97368419, 1.00000000, 0.95357142, 
> 0.95238096, 1.00000000, 0.93333334, 0.96428573],[1.00000000, 1.00000000, 
> 0.94999999, 0.95833331, 1.00000000, 1.00000000, 0.99107143, 0.94583333, 
> 1.00000000, 0.95000000, 0.98333333, 0.92106681, 0.97368419, 1.00000000, 
> 0.95357142, 0.95238096, 1.00000000, 0.93333334, 0.96428573]]
> RealMatrix rcp = MatrixUtils.createRealMatrix(CP);    
> SingularValueDecomposition svd = new SingularValueDecompositionImpl(rcp);     
>         
> RealMatrix U = svd.getU();
> RealMatrix S = svd.getS();
> RealMatrix Vt = svd.getVT();
> double[] singularValues = svd.getSingularValues();

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to