Skip to content
This repository was archived by the owner on May 15, 2025. It is now read-only.

Commit 3f416ee

Browse files
author
tom
committed
Return InitialFailure from bracketing methods if not enclosing interval
1 parent ae4f888 commit 3f416ee

File tree

5 files changed

+31
-0
lines changed

5 files changed

+31
-0
lines changed

src/bracketing/bisection.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ function SciMLBase.solve(prob::IntervalNonlinearProblem, alg::Bisection,
3939
prob, alg, right, fr; retcode = ReturnCode.ExactSolutionRight, left, right)
4040
end
4141

42+
if sign(fl) == sign(fr)
43+
@warn "The interval is not an enclosing interval, opposite signs at the boundaries are required."
44+
return build_solution(
45+
prob, alg, left, fl; retcode = ReturnCode.InitialFailure, left, right)
46+
end
47+
4248
i = 1
4349
if !iszero(fr)
4450
while i < maxiters

src/bracketing/brent.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ function SciMLBase.solve(prob::IntervalNonlinearProblem, alg::Brent, args...;
2626
prob, alg, right, fr; retcode = ReturnCode.ExactSolutionRight, left, right)
2727
end
2828

29+
if sign(fl) == sign(fr)
30+
@warn "The interval is not an enclosing interval, opposite signs at the boundaries are required."
31+
return build_solution(
32+
prob, alg, left, fl; retcode = ReturnCode.InitialFailure, left, right)
33+
end
34+
2935
if abs(fl) < abs(fr)
3036
c = right
3137
right = left

src/bracketing/falsi.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ function SciMLBase.solve(prob::IntervalNonlinearProblem, alg::Falsi, args...;
2525
prob, alg, right, fr; retcode = ReturnCode.ExactSolutionRight, left, right)
2626
end
2727

28+
if sign(fl) == sign(fr)
29+
@warn "The interval is not an enclosing interval, opposite signs at the boundaries are required."
30+
return build_solution(
31+
prob, alg, left, fl; retcode = ReturnCode.InitialFailure, left, right)
32+
end
33+
2834
# Regula Falsi Steps
2935
i = 0
3036
if !iszero(fr)

src/bracketing/itp.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,13 @@ function SciMLBase.solve(prob::IntervalNonlinearProblem, alg::ITP, args...;
7575
return build_solution(
7676
prob, alg, right, fr; retcode = ReturnCode.ExactSolutionRight, left, right)
7777
end
78+
79+
if sign(fl) == sign(fr)
80+
@warn "The interval is not an enclosing interval, opposite signs at the boundaries are required."
81+
return build_solution(
82+
prob, alg, left, fl; retcode = ReturnCode.InitialFailure, left, right)
83+
end
84+
7885
ϵ = abstol
7986
#defining variables/cache
8087
k2 = alg.k2

src/bracketing/ridder.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ function SciMLBase.solve(prob::IntervalNonlinearProblem, alg::Ridder, args...;
2525
prob, alg, right, fr; retcode = ReturnCode.ExactSolutionRight, left, right)
2626
end
2727

28+
if sign(fl) == sign(fr)
29+
@warn "The interval is not an enclosing interval, opposite signs at the boundaries are required."
30+
return build_solution(
31+
prob, alg, left, fl; retcode = ReturnCode.InitialFailure, left, right)
32+
end
33+
2834
xo = oftype(left, Inf)
2935
i = 1
3036
if !iszero(fr)

0 commit comments

Comments
 (0)