[ https://issues.apache.org/jira/browse/MATH-320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12776449#action_12776449 ]
Dieter Vandenbussche commented on MATH-320: ------------------------------------------- Yes, making that change fixes the singular values, printing the singular values now gives array('d', [11.218599757513008, 0.3781791648535976, 0.0]) The unittests for the project still pass as well. However, now the solve fails with a SinularMatrixException Traceback (most recent call last): File "testdecomp.py", line 14, in <module> soln = solver.solve([5.0, 6.0,7.0]) at org.apache.commons.math.linear.SingularValueDecompositionImpl$Solver.solve(SingularValueDecompositionImpl.java:371) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) org.apache.commons.math.linear.SingularMatrixException: org.apache.commons.math.linear.SingularMatrixException: matrix is singular This confuses me, i guess i'm assuming incorrectly that if the solve method can solve in the least squares sense, then it should be able to handle singular matrices. Is that just a restriction on the current solve methods and if so, are there plans to relax that restriction? thanks very much for your time > NaN singular value from SVD > --------------------------- > > Key: MATH-320 > URL: https://issues.apache.org/jira/browse/MATH-320 > Project: Commons Math > Issue Type: Bug > Affects Versions: 2.0 > Environment: Linux (Ubuntu 9.10) java version "1.6.0_16" > Reporter: Dieter Vandenbussche > > The following jython code > Start code > from org.apache.commons.math.linear import * > > Alist = [[1.0, 2.0, 3.0],[2.0,3.0,4.0],[3.0,5.0,7.0]] > > A = Array2DRowRealMatrix(Alist) > > decomp = SingularValueDecompositionImpl(A) > > print decomp.getSingularValues() > End code > prints > array('d', [11.218599757513008, 0.3781791648535976, nan]) > The last singular value should be something very close to 0 since the matrix > is rank deficient. When i use the result from getSolver() to solve a system, > i end > up with a bunch of NaNs in the solution. I assumed i would get back a least > squares solution. > Does this SVD implementation require that the matrix be full rank? If so, > then i would expect > an exception to be thrown from the constructor or one of the methods. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.