[ https://issues.apache.org/jira/browse/MATH-439?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gilles updated MATH-439: ------------------------ Attachment: NLCG.testCircleFitting.txt I'm attaching an output when running {{testCircleFitting}}. "min" and "max" indicate the search interval bounds passed to {{solve}}. "lo" and "hi" are the bounds of the search interval used by Brent's algorithm (the 2-points implementation as described in the the book): It uses half of the original interval (the part that brackets the root). "step" is the solution returned by {{solve}} and subsequently used by the caller (cf. code excerpt in one of the above comments). I hope that some expert can explain what the problem is. > Refactoring of solvers (package "analysis.solvers") > --------------------------------------------------- > > Key: MATH-439 > URL: https://issues.apache.org/jira/browse/MATH-439 > Project: Commons Math > Issue Type: Improvement > Reporter: Gilles > Priority: Minor > Fix For: 3.0 > > Attachments: AbstractUnivariateRealSolver.java, > NLCG.testCircleFitting.txt > > > The classes in package "analysis.solvers" could be refactored similarly to > what was done for package {{optimization}}. > * Replace {{MaxIterationsExceededException}} with > {{TooManyEvaluationsException}}: > Apart from the class {{MaxIterationsExceededException}} being deprecated, > this approach makes it difficult to compare different algorithms: While the > concept of iteration is algorithm-dependent, the user is probably mostly > interested in the number of function evaluations. > * Implement the method {{solve}} in the base class > ({{UnivariateRealSolverImpl}}) and define an abstract method {{doSolve}} to > be implemented in derived classes. This method would then use a new > {{computeObjectiveFunction}} method that will take care of the counting of > the function evaluations. > * Remove "protected" fields (the root is unnecessary since it is returned by > {{solve}}). Arguingly the function value is also not very useful (as we know > what it should be), except for debugging purposes (in which case, it might > not be a problem to call the function's {{value}} method once more). > * Remove the tolerance setter (accuracy) and make the corresponding fields > "final". -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.