[
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.