@@ -222,6 +222,18 @@ for p in 1.1:0.1:100.0
222
222
@test ForwardDiff. derivative (g, p) ≈ 1 / (2 * sqrt (p))
223
223
end
224
224
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
+
225
237
f, tspan = (u, p) -> p[1 ] * u * u - p[2 ], (1.0 , 100.0 )
226
238
t = (p) -> [sqrt (p[2 ] / p[1 ])]
227
239
p = [0.9 , 50.0 ]
@@ -288,6 +300,7 @@ probB = IntervalNonlinearProblem(f, tspan)
288
300
sol = solve (probB, Falsi ())
289
301
@test sol. left ≈ sqrt (2.0 )
290
302
303
+ # Bisection
291
304
sol = solve (probB, Bisection ())
292
305
@test sol. left ≈ sqrt (2.0 )
293
306
@@ -315,6 +328,18 @@ probB = IntervalNonlinearProblem(f, tspan)
315
328
sol = solve (probB, Brent ())
316
329
@test sol. left ≈ sqrt (2.0 )
317
330
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
+
318
343
# Garuntee Tests for Bisection
319
344
f = function (u, p)
320
345
if u < 2.0
0 commit comments