David P. Sanders
David P. Sanders
Use the standard (non-interval) Newton method to look for approximate roots, then use epsilon inflation to prove the existence of a root and remove boxes there.
Remove old code: - [x] bisection.jl - [x] move out definitions of `N` used in `branch_and_prune` - [ ] krawczyk.jl - [ ] newton.jl - [ ] find_roots stuff
I'm sure this used to work.
Problem taken from https://discourse.julialang.org/t/solvers-fail-on-nonlinear-problem-which-has-solutions/20051: ``` function f(X, p) x1,x2,x3,x4,x5,x6,x7,x8,x9,x10 = X return SVector( -p[17] * x1 + -2 * p[1] * (x1 ^ 2 / 2) + 2 * p[2]...
``` julia> f(p) = abs(1 / ( (1+p)^30 ) * 10_000 - 100) f (generic function with 1 method) julia> roots(f, -1000..1000, Newton) 2-element Array{Root{Interval{Float64}},1}: Root(∅, :unique) Root(∅, :unique) ```
Done in #110.
Add mean value forms for scalar and vector functions, and a 3rd-order Taylor form for scalar functions.
It may be useful to have a `RootProblem` type that encodes the function, the `IntervalBox`, the dimension, etc.
Done in #88