I'm looking for advice to pick a numerical method to find all roots of a univariate function $f$ on a finite interval:
- $f$ is Lipschitz-continuous with unknown $L$ (without that assumption, it is hopeless anyway)
- $f$ is a black box and costly to evaluate, (no derivatives known, finite differences are too costly)
The hard part is to nail down an interval around each root, then e.g. Regula Falsi finds the root quickly.
The function $$f : [0,1] \mapsto \sqrt{x} \cos\left(\frac{1}{\log(x+1.05)}\right)$$ is a good test case, which (the best I got) took about 60 calls to get all 7 roots. Here you have an example of how $f$ in general can look like. Thanks in advance!
Remark: The method has to be implemented in hlsl for a shader using single-precision floating-point format, such that a rather simple and deterministic algorithm which does not involve matrix-algebra is preferred.
