More root finding methods
Hey,
I was a bit bored recently and implemented a couple of methods. I can open a PR if there is some interest. The methods are:
Minimizers (all 1D only):
- Brent's method
- Golden-Section Search
- Succesive Parabolic Interpolation
Root finders (1D):
- Brent-Dekker method
- Secant in 1D
- Inverse Quadratic Interpolation
- Householder's method
Root finders (multivariate): -Broyden (good and bad) -a Secant-like method -Regula Falsi (based on the secant-like method)
I think the most relevant ones are Brent, Brent-Dekker, Householder and Broyden. But maybe there are use cases for the others as well.
Also I was wondering if there is some consideration on incorporating linesearches into root-finding? This would make the Newton-Raphson-like solvers much more stable.
That sounds very interesting! How about we discuss this during a video call?
Re-factoring the root finders for compatibility with line searches is a long-standing item on our list, with some recent interest from @djbower in https://github.com/patrick-kidger/optimistix/issues/4.
Chipping in my 2 cents, I think these sound in-scope for Optimistix. :)
From my own experience using Optimistix applied to thermochemistry problems I think adding a trust region to the Newton root finder would be highly beneficial and the most obvious first step. My system is often composed of functions that throw NaNs outside of certain bounds (since physically NaN regions are prohibited), which means I also exploit the hypercube clipping to keep the solution within bounds. But there are probably improvements that could be implemented, maybe in the way that the solver handles NaNs internally.
@johannahaffner, sure we can do that. :)
Great! Are you currently at DESY or is that a different Till? I'll send you an email to the address listed if so.
Would you like to be part of the discussion, @djbower?
In the short term I will follow the issue here since I have a few weeks of travel coming up, so don't delay progress for the sake of me joining on the first call. But I'm interested in seeing how this proceeds and can join for later discussions.
Hey @johannahaffner, sorry for the delay. Yes, just send me an email. :)
Hey everyone, Do you guys have a timeline for this? i.e. allowing line searches to be compatible with Root finders! Would be super nice to have!