On Wed, Sep 07, 2011 at 02:46:59PM +0200, Luc Maisonobe wrote: > Le 07/09/2011 12:45, Gilles Sadowski a écrit : > >Hello. > > > >In class "AbstractLeastSquaresOptimizer" (in "o.a.c.m.optimization.general"), > >the method "getCovariances()" uses "LUDecompositionImpl" to compute the > >inverse of a matrix. > >In my application, this leads to a "SingularMatrixException". If I change > >"LUDecompositionImpl" to "QRDecompositionImpl", no exception is raised. > >Also, keeping "LUDecompositionImpl" but passing a much lower singularity > >threshold, does not raise the exception either. > > > >Thus, I wonder whether there was a reason for using "LU", and if not, > >whether I could change the decomposition solver to "QR" (as this is a > >cleaner solution than guessing a good value for the threshold). > > There are no reason for LU decomposition, and QR decomposition is > known to be more stable. So I would also consider switching to this > algorithm is a cleaner solution.
Fine. I'll open a JIRA issue. A unit test "testNonInvertible" in "LevenbergMarquardtOptimizerTest" fails with the change to "QRDecomposition" because no "SingularMatrixException" is raised anymore. What was the purpose of that test? Thanks, Gilles --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org