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

Add support for SVD.

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.1
    • 2.0
    • None
    • None

    Description

      SVD is probably the most important feature in any linear algebra package, though also one of the more difficult.

      In general, SVD is needed because very often real systems end up being singular (which can be handled by QR), or nearly singular (which can't). A good example is a nonlinear root finder. Often the jacobian will be nearly singular, but it is VERY rare for it to be exactly singular. Consequently, LU or QR produces really bad results, because they are dominated by rounding error. What is needed is a way to throw out the insignificant parts of the solution, and take what improvements we can get. That is what SVD provides. The colt SVD algorithm has a serious infinite loop bug, caused primarily by Double.NaN in the inputs, but also by underflow and overflow, which really can't be prevented.

      If worried about patents and such, SVD can be derrived from first principals very easily with the acceptance of two postulates.

      1) That an SVD always exists.
      2) That Jacobi reduction works.

      Both are very basic results from linear algebra, available in nearly any text book. Once that's accepted, then the rest of the algorithm falls into place in a very simple manner.

      Attachments

        1. svd2.tar.gz
          3 kB
          Remi Arntzen
        2. svd.tar.gz
          2 kB
          Remi Arntzen
        3. svd_src.zip
          17 kB
          Andrew Arnold

        Issue Links

          Activity

            People

              luc Luc Maisonobe
              tyward Tyler Ward
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: