[ https://issues.apache.org/jira/browse/MATH-599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13073393#comment-13073393 ]
Gilles commented on MATH-599: ----------------------------- "AllowedSolutions" changed to"AllowedSolution" in revision 1152644. > Re-implementation of Secant-based root finding algorithms > --------------------------------------------------------- > > Key: MATH-599 > URL: https://issues.apache.org/jira/browse/MATH-599 > Project: Commons Math > Issue Type: Improvement > Reporter: Dennis Hendriks > Labels: documentation, patch > Fix For: 3.0 > > Attachments: secant-based-root-finding-algos.patch, > secant-based-root-finding-algos2.patch, secant-based-root-finding-algos2.zip > > > Apache Commons Math currently has a SecantSolver. It is unclear exactly what > algorithm this solver implements. It states: "The algorithm is modified to > maintain bracketing of a root by successive approximations. Because of forced > bracketing, convergence may be slower than the unrestricted Secant algorithm. > However, this implementation should in general outperform the Regula Falsi > method." The Regula Falsi method is exactly the Secant method modified to > maintain a bracketed solution. It is therefore unclear what other > modifications were done to make it 'better' than the Regula Falsi method. > Besides the Secant and Regula Falsi methods, several other Secant-based > root-finding algorithms exist, such as the the Illinois method, and the > Pegasus method. All 4 are well-known, publisched algorithms. > I created a patch, which changes the following: > - Removed SecantSolver root-finding algorithm. > - Implemented new Secant-based root-finding algorithms: SecantSolver, > RegulaFalsiSolver, IllinoisSolver, and PegasusSolver. > - Introduced BracketedSolution interface and AllowedSolutions enumeration, > to control allowed solutions (under-approximations and over-approximations) > for bracketed root-finding algorithms. Implemented for RegulaFalsiSolver, > IllinoisSolver, and PegasusSolver. > - Fixed documentation of BaseUnivariateRealSolver.solve methods, such that > documentation order of arguments matches the order of the actual arguments. > Note that the original SecantSolver was removed, and replaced by a > root-finding algorithm that actually implements the Secant root-finding > algorithm. As such, existing code using the SecantSolver is not backwards > compatible. That is, even though the new SecantSolver does implement the same > interfaces, the root-finding solutions may differ. In particular, the new > SecantSolver does not maintain a bracketed solution, and does not guarantee > convergence. > I added unit tests, and I did a build, including checkstyle checking. I did > not fix all checkstyle warnings though, as I consider some of them false > positives. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira