Hi. > >>> > >>>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? > > The purpose was to check that impossible problems were detected properly.
My question should have been clearer: Was the previous behaviour correct (i.e. an exception *must* be raised somehow)? The switch to "QR" seems to imply that a previously impossible problem is now quite possible. So, is the problem really impossible or was the test actually testing a fragile implementation of "getCovariances()"? Regards, Gilles --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org