Uploaded image for project: 'Commons Math'
  1. Commons Math
  2. MATH-601

SingularValueDecompositionImpl psuedoinverse is not consistent with Rank calculation

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.2
    • Fix Version/s: 3.0
    • Labels:
    • Environment:

      All

      Description

      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.

        Attachments

          Activity

            People

            • Assignee:
              psteitz Phil Steitz
              Reporter:
              gsteri1 greg sterijevski
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 24h
                24h
                Remaining:
                Remaining Estimate - 24h
                24h
                Logged:
                Time Spent - Not Specified
                Not Specified