Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Muller's method #564

Closed
fgittins opened this issue Mar 30, 2025 · 1 comment
Closed

Muller's method #564

fgittins opened this issue Mar 30, 2025 · 1 comment

Comments

@fgittins
Copy link
Contributor

What kind of problems is it mostly used for? Please describe.

Determining the roots of univariate complex functions. Muller's method is commonly used to determine the (quasi-normal) oscillation modes of neutron stars [1,2]. The algorithm only applies to univariate, scalar functions.

Describe the algorithm you’d like

The algorithm is quite simple and described well in Press et al. [3] (see also Wikipedia [4]).

To summarise: Muller's method is a generalisation of the secant method, with the key difference being that it uses quadratic interpolation across three points (as opposed to linear interpolation among two). Solving for the roots of a quadratic is trivial and allows the method to work for complex roots.

Other implementations to know about

There is an existing Julia implementation in Roots.jl [5] and a Fortran routine in IMSL [6]. I also started implementing this in the deprecated SimpleNonlinearSolve.jl (see my fork at [7]).

Notes

I suggested this algorithm before for SimpleNonlinearSolve.jl in #403 and worked on a (now closed) pull request (SciML/SimpleNonlinearSolve.jl#139).

References

[1] Kokkotas & Schutz (1992)
[2] Kruger, PhD Thesis (2016)
[3] Press et al. (2007), Sec. 9.5.2, p. 466
[4] Wikipedia, Muller's method
[5] Roots.muller
[6] IMSL Math/Library Users Manual, Zanly
[7] SimpleNonlinearSolve fork

@fgittins
Copy link
Contributor Author

I'm closing this issue since it's a duplicate of #403. I'll move discussion over there.

# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

2 participants