@@ -222,6 +222,18 @@ for p in 1.1:0.1:100.0
222222 @test ForwardDiff. derivative (g, p) ≈ 1 / (2 * sqrt (p))
223223end
224224
225+ f, tspan = (u, p) -> p[1 ] * u * u - p[2 ], (1.0 , 100.0 )
226+ t = (p) -> [sqrt (p[2 ] / p[1 ])]
227+ p = [0.9 , 50.0 ]
228+ g = function (p)
229+ probN = IntervalNonlinearProblem {false} (f, tspan, p)
230+ sol = solve (probN, Alefeld ())
231+ return [sol. u]
232+ end
233+
234+ @test g (p) ≈ [sqrt (p[2 ] / p[1 ])]
235+ @test ForwardDiff. jacobian (g, p) ≈ ForwardDiff. jacobian (t, p)
236+
225237f, tspan = (u, p) -> p[1 ] * u * u - p[2 ], (1.0 , 100.0 )
226238t = (p) -> [sqrt (p[2 ] / p[1 ])]
227239p = [0.9 , 50.0 ]
@@ -288,6 +300,7 @@ probB = IntervalNonlinearProblem(f, tspan)
288300sol = solve (probB, Falsi ())
289301@test sol. left ≈ sqrt (2.0 )
290302
303+ # Bisection
291304sol = solve (probB, Bisection ())
292305@test sol. left ≈ sqrt (2.0 )
293306
@@ -315,6 +328,18 @@ probB = IntervalNonlinearProblem(f, tspan)
315328sol = solve (probB, Brent ())
316329@test sol. left ≈ sqrt (2.0 )
317330
331+ # Alefeld
332+ sol = solve (probB, Alefeld ())
333+ @test sol. u ≈ sqrt (2.0 )
334+ tspan = (sqrt (2.0 ), 10.0 )
335+ probB = IntervalNonlinearProblem (f, tspan)
336+ sol = solve (probB, Alefeld ())
337+ @test sol. u ≈ sqrt (2.0 )
338+ tspan = (0.0 , sqrt (2.0 ))
339+ probB = IntervalNonlinearProblem (f, tspan)
340+ sol = solve (probB, Alefeld ())
341+ @test sol. u ≈ sqrt (2.0 )
342+
318343# Garuntee Tests for Bisection
319344f = function (u, p)
320345 if u < 2.0
0 commit comments