New issue

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

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

Already on GitHub? Sign in to your account

Add info about the function in the README #154

Open
dpsanders opened this Issue Mar 12, 2018 · 9 comments

Comments

Projects
None yet
3 participants
@dpsanders

dpsanders commented Mar 12, 2018

The function in the README has precisely 80 roots in (-5..5)^2
(assuming IntervalRootFinding is working correctly...):

julia> using IntervalArithmetic, IntervalRootFinding, StaticArrays

julia> f(x, y) = SVector( (x+3)*(y^3-7)+18, sin(y*exp(x)-1) )
f (generic function with 1 method)

julia> f(xx) = f(xx...)
f (generic function with 2 methods)

julia> rts = roots(f, IntervalBox(-5..5, 2), Newton, 1e-20)
80-element Array{IntervalRootFinding.Root{IntervalArithmetic.IntervalBox{2,Float64}},1}:
 Root([4.99884, 4.99885] × [1.68094, 1.68095], :unique)
 Root([4.98639, 4.9864] × [1.68053, 1.68054], :unique)
 Root([4.97379, 4.9738] × [1.68011, 1.68012], :unique)
 Root([4.96103, 4.96104] × [1.67968, 1.67969], :unique)
 Root([4.9481, 4.94811] × [1.67925, 1.67926], :unique)
 Root([4.935, 4.93501] × [1.67881, 1.67882], :unique)
 Root([4.92172, 4.92173] × [1.67836, 1.67837], :unique)
 Root([4.90826, 4.90827] × [1.6779, 1.67791], :unique)
 Root([4.89461, 4.89462] × [1.67743, 1.67744], :unique)
 Root([4.88077, 4.88078] × [1.67696, 1.67697], :unique)
 ⋮
 Root([2.91809, 2.9181] × [1.58188, 1.58189], :unique)
 Root([2.80939, 2.8094] × [1.57427, 1.57428], :unique)
 Root([2.68705, 2.68706] × [1.56525, 1.56526], :unique)
 Root([2.54714, 2.54715] × [1.55431, 1.55432], :unique)
 Root([2.3837, 2.38371] × [1.5406, 1.54061], :unique)
 Root([2.18717, 2.18718] × [1.5226, 1.52261], :unique)
 Root([1.94053, 1.94054] × [1.49727, 1.49728], :unique)
 Root([1.60901, 1.60902] × [1.45725, 1.45726], :unique)
 Root([1.10116, 1.10117] × [1.377, 1.37701], :unique)
 Root([0, 0] × [1, 1], :unique)

julia> all([root.status for root in rts] .== :unique)
true
@dpsanders

This comment has been minimized.

Show comment
Hide comment
@dpsanders

dpsanders Mar 12, 2018

(This is with the latest PR to IntervalRootFinding, changing bisection to not bisect exactly in the centre of an interval.)

dpsanders commented Mar 12, 2018

(This is with the latest PR to IntervalRootFinding, changing bisection to not bisect exactly in the centre of an interval.)

@pkofod

This comment has been minimized.

Show comment
Hide comment
@pkofod

pkofod Mar 12, 2018

Contributor

Thanks! I'll try to write something intelligent about the problem :)

Contributor

pkofod commented Mar 12, 2018

Thanks! I'll try to write something intelligent about the problem :)

@dpsanders

This comment has been minimized.

Show comment
Hide comment
@dpsanders

dpsanders Mar 12, 2018

By the way, where did that function come from? It's pretty nasty ;)

dpsanders commented Mar 12, 2018

By the way, where did that function come from? It's pretty nasty ;)

@dpsanders

This comment has been minimized.

Show comment
Hide comment
@dpsanders

dpsanders Mar 12, 2018

Do you know any other software with which we can check if that number of roots is correct? Mathematica doesn't seem to be able to do it...

dpsanders commented Mar 12, 2018

Do you know any other software with which we can check if that number of roots is correct? Mathematica doesn't seem to be able to do it...

@pkofod

This comment has been minimized.

Show comment
Hide comment
@pkofod

pkofod Mar 12, 2018

Contributor

It's pretty nasty ;)

It's very nasty indeed! And above all, solving it is a very bad example of what this package claims it can do :) It's old... You'd have to ask svillemot, he added it in Dec 24, 2013 :) c434bd8#diff-04c6e90faac2675aa89e2176d2eec7d8

Contributor

pkofod commented Mar 12, 2018

It's pretty nasty ;)

It's very nasty indeed! And above all, solving it is a very bad example of what this package claims it can do :) It's old... You'd have to ask svillemot, he added it in Dec 24, 2013 :) c434bd8#diff-04c6e90faac2675aa89e2176d2eec7d8

@dpsanders

This comment has been minimized.

Show comment
Hide comment
@dpsanders

dpsanders commented Mar 12, 2018

cc @svillemot ^

@dpsanders

This comment has been minimized.

Show comment
Hide comment
@dpsanders

dpsanders Mar 12, 2018

I found this:

https://www.sciencedirect.com/science/article/pii/S0377042700007111

which effectively seems to do what IntervalRootFinding.jl does, only without intervals.

It has some nice looking hard test cases.

dpsanders commented Mar 12, 2018

I found this:

https://www.sciencedirect.com/science/article/pii/S0377042700007111

which effectively seems to do what IntervalRootFinding.jl does, only without intervals.

It has some nice looking hard test cases.

@svillemot

This comment has been minimized.

Show comment
Hide comment
@svillemot

svillemot Mar 12, 2018

Contributor

I actually don't remember why I picked this particular example, sorry. But clearly I was not aware that it had 80 roots! I guess it should be replaced by a better-behaving one…

Contributor

svillemot commented Mar 12, 2018

I actually don't remember why I picked this particular example, sorry. But clearly I was not aware that it had 80 roots! I guess it should be replaced by a better-behaving one…

@pkofod

This comment has been minimized.

Show comment
Hide comment
@pkofod

pkofod Mar 13, 2018

Contributor

I actually don't remember why I picked this particular example, sorry. But clearly I was not aware that it had 80 roots! I guess it should be replaced by a better-behaving one…

It does serve as a warning though, we might just want to make it explicit :)

Contributor

pkofod commented Mar 13, 2018

I actually don't remember why I picked this particular example, sorry. But clearly I was not aware that it had 80 roots! I guess it should be replaced by a better-behaving one…

It does serve as a warning though, we might just want to make it explicit :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment