I've been doing some investigation regarding MATH-1333 and I cam across some bounds issues in MullerSolver and MullerSolver2. There are a few test cases I've created which cause these solvers to return values outside of their initial bracket. I've created fixes for MullerSolver but MullerSolver2 baffles me. MullerSolver is more or less an implementation of the algorithm you can find at https://en.wikipedia.org/wiki/Muller's_method while MullerSolver2 is an implementation of the algorithm at http://mathworld.wolfram.com/MullersMethod.html. But the major difference between MullerSolver 1 & 2 is that MullerSolver2 was designed to work without bracketing. This turns out to make it fairly easy to make it return faulty values.
Now my question is: How much should these solvers stick to their original algorithms? If the original algorithm is flawed should solver exhibit those same flaws? There is some precedent for that in SecantSolver which has the same guarantees of convergence as the original algorithm (which has none). But MullerSolver2 is clearly a patched version of the algorithm it is based off of and exhibits some very characteristic flaws from the original algorithm. Should MullerSolver2's bounds issue be fixed or should that issue just be accepted a limitation of that algorithm? Best Regards, Connor Petty
