In the following example, the Newton contractor doesn't result in the NG flag for some of the root, while Krawczyk does.
This is surprising and a bit suspicious.
ulia> g(x) = (x^2 - 2)^2 * (x^2 - 3)
g (generic function with 1 method)
julia> roots(g, interval(-10, 10) ; contractor = Newton)
4-element Vector{Root{Interval{Float64}}}:
Root([-1.73205, -1.73205]_com_NG, :unique)
Root([-1.41421, -1.41421]_com, :unknown)
Not converged: region size smaller than the tolerance
Root([1.41421, 1.41421]_com, :unknown)
Not converged: region size smaller than the tolerance
Root([1.73205, 1.73205]_com_NG, :unique)
julia> roots(g, interval(-10, 10) ; contractor = Krawczyck)
ERROR: UndefVarError: `Krawczyck` not defined in `Main`
Suggestion: check for spelling errors or missing imports.
Stacktrace:
[1] top-level scope
@ REPL[14]:1
julia> roots(g, interval(-10, 10) ; contractor = Krawczyk)
4-element Vector{Root{Interval{Float64}}}:
Root([-1.73205, -1.73205]_com_NG, :unique)
Root([-1.41421, -1.41421]_com_NG, :unknown)
Not converged: region size smaller than the tolerance
Root([1.41421, 1.41421]_com_NG, :unknown)
Not converged: region size smaller than the tolerance
Root([1.73205, 1.73205]_com_NG, :unique)
In the following example, the Newton contractor doesn't result in the NG flag for some of the root, while Krawczyk does.
This is surprising and a bit suspicious.