|
1 | 1 | @testitem "Muller" begin
|
2 |
| - @testset "Quadratic function" begin |
3 |
| - f(u, p) = u^2 - p |
| 2 | + f(u, p) = u^2 - p |
| 3 | + g(u, p) = sin(u) |
| 4 | + h(u, p) = exp(-u)*sin(u) |
| 5 | + i(u, p) = u^3 - 1 |
4 | 6 |
|
| 7 | + @testset "Quadratic function" begin |
5 | 8 | tspan = (10.0, 30.0)
|
6 | 9 | p = 612.0
|
7 | 10 | prob = IntervalNonlinearProblem{false}(f, tspan, p)
|
|
17 | 20 | end
|
18 | 21 |
|
19 | 22 | @testset "Sine function" begin
|
20 |
| - f(u, p) = sin(u) |
21 |
| - |
22 | 23 | tspan = (1.0, 3.0)
|
23 |
| - prob = IntervalNonlinearProblem{false}(f, tspan) |
| 24 | + prob = IntervalNonlinearProblem{false}(g, tspan) |
24 | 25 | sol = solve(prob, Muller())
|
25 | 26 |
|
26 | 27 | @test sol.u ≈ π
|
27 | 28 |
|
28 | 29 | tspan = (2.0, 6.0)
|
29 |
| - prob = IntervalNonlinearProblem{false}(f, tspan) |
| 30 | + prob = IntervalNonlinearProblem{false}(g, tspan) |
30 | 31 | sol = solve(prob, Muller())
|
31 | 32 |
|
32 | 33 | @test sol.u ≈ 2*π
|
33 | 34 | end
|
34 | 35 |
|
35 | 36 | @testset "Exponential-sine function" begin
|
36 |
| - f(u, p) = exp(-u)*sin(u) |
37 |
| - |
38 | 37 | tspan = (-2.0, -4.0)
|
39 |
| - prob = IntervalNonlinearProblem{false}(f, tspan) |
| 38 | + prob = IntervalNonlinearProblem{false}(h, tspan) |
40 | 39 | sol = solve(prob, Muller())
|
41 | 40 |
|
42 | 41 | @test sol.u ≈ -π
|
43 | 42 |
|
44 | 43 | tspan = (-3.0, 1.0)
|
45 |
| - prob = IntervalNonlinearProblem{false}(f, tspan) |
| 44 | + prob = IntervalNonlinearProblem{false}(h, tspan) |
46 | 45 | sol = solve(prob, Muller())
|
47 | 46 |
|
48 | 47 | @test sol.u ≈ 0 atol = 1e-15
|
49 | 48 |
|
50 | 49 | tspan = (-1.0, 1.0)
|
51 |
| - prob = IntervalNonlinearProblem{false}(f, tspan) |
| 50 | + prob = IntervalNonlinearProblem{false}(h, tspan) |
52 | 51 | sol = solve(prob, Muller())
|
53 | 52 |
|
54 | 53 | @test sol.u ≈ π
|
55 | 54 | end
|
56 | 55 |
|
57 | 56 | @testset "Complex roots" begin
|
58 |
| - f(u, p) = u^3 - 1 |
59 |
| - |
60 | 57 | tspan = (-1.0, 1.0*im)
|
61 |
| - prob = IntervalNonlinearProblem{false}(f, tspan) |
| 58 | + prob = IntervalNonlinearProblem{false}(i, tspan) |
62 | 59 | sol = solve(prob, Muller())
|
63 | 60 |
|
64 | 61 | @test sol.u ≈ (-1 + √3*im)/2
|
65 | 62 |
|
66 | 63 | tspan = (-1.0, -1.0*im)
|
67 |
| - prob = IntervalNonlinearProblem{false}(f, tspan) |
| 64 | + prob = IntervalNonlinearProblem{false}(i, tspan) |
68 | 65 | sol = solve(prob, Muller())
|
69 | 66 |
|
70 | 67 | @test sol.u ≈ (-1 - √3*im)/2
|
71 | 68 | end
|
| 69 | + |
| 70 | + @testset "Middle" begin |
| 71 | + tspan = (10.0, 30.0) |
| 72 | + p = 612.0 |
| 73 | + prob = IntervalNonlinearProblem{false}(f, tspan, p) |
| 74 | + sol = solve(prob, Muller(20.0)) |
| 75 | + |
| 76 | + @test sol.u ≈ √612 |
| 77 | + |
| 78 | + tspan = (1.0, 3.0) |
| 79 | + prob = IntervalNonlinearProblem{false}(g, tspan) |
| 80 | + sol = solve(prob, Muller(2.0)) |
| 81 | + |
| 82 | + @test sol.u ≈ π |
| 83 | + |
| 84 | + tspan = (-2.0, -4.0) |
| 85 | + prob = IntervalNonlinearProblem{false}(h, tspan) |
| 86 | + sol = solve(prob, Muller(-3.0)) |
| 87 | + |
| 88 | + @test sol.u ≈ -π |
| 89 | + |
| 90 | + tspan = (-1.0, 1.0*im) |
| 91 | + prob = IntervalNonlinearProblem{false}(i, tspan) |
| 92 | + sol = solve(prob, Muller(0.0)) |
| 93 | + |
| 94 | + @test sol.u ≈ (-1 + √3*im)/2 |
| 95 | + end |
72 | 96 | end
|
0 commit comments