commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tyler Ward (JIRA)" <j...@apache.org>
Subject [jira] Commented: (MATH-157) Add support for SVD.
Date Thu, 02 Nov 2006 01:37:17 GMT
    [ http://issues.apache.org/jira/browse/MATH-157?page=comments#action_12446423 ] 
            
Tyler Ward commented on MATH-157:
---------------------------------


Also, about testing. I've found that the best way to test this is just with random matrices.
If you can use, say, 10,000 random matrices and always get back what you started with (within
some small tolerance), then you'll know that you're doing it correctly. In order to create
a symmetric matrix, just make a random matrix and multiply it by its own transpose, that will
always be square symmetric, then try the above procedure, and make sure you can get back to
what you started with. 

There are some special cases to be dealt with, but those are easily added later. 

> Add support for SVD.
> --------------------
>
>                 Key: MATH-157
>                 URL: http://issues.apache.org/jira/browse/MATH-157
>             Project: Commons Math
>          Issue Type: New Feature
>            Reporter: Tyler Ward
>         Attachments: svd.tar.gz
>
>
> 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.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message