You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Christopher Nix (JIRA)" <ji...@apache.org> on 2011/07/22 13:02:58 UTC

[jira] [Updated] (MATH-601) SingularValueDecompositionImpl psuedoinverse is not consistent with Rank calculation

     [ https://issues.apache.org/jira/browse/MATH-601?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christopher Nix updated MATH-601:
---------------------------------

    Attachment: SingularValueDecompositionImpl.patch

getRank() employs a local tolerance value to determine if a singular value should be counted.  

I have attached a patch that moves this tolerance value to a static variable in the main class to be accessed by the Solver in working out the pseudo-inverse.  This tolerance value will also guard against overflow.

> SingularValueDecompositionImpl psuedoinverse is not consistent with Rank calculation
> ------------------------------------------------------------------------------------
>
>                 Key: MATH-601
>                 URL: https://issues.apache.org/jira/browse/MATH-601
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 2.2, 3.0
>         Environment: All
>            Reporter: greg sterijevski
>              Labels: Pseudoinverse
>         Attachments: SingularValueDecompositionImpl.patch
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> In the SingularValueDecompositionImpl's internal private class Solver, a pseudo inverse matrix is calculated:
> In lines 2600-264 we have:
>                 if (singularValues[i] > 0) {
>                  a = 1 / singularValues[i];
>                 } else {
>                  a = 0;
>                 }
> This is not consistent with the manner in which rank is determined (lines 225 to 233). That is to say a matrix could potentially be rank deficient, yet the psuedoinverse would still include the redundant columns... 
> Also, there is the problem of very small singular values which could result in overflow.  

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira