@@ -15,16 +15,22 @@ I. F. D. Oliveira and R. H. C. Takahashi.
15
15
The following keyword parameters are accepted.
16
16
17
17
- `n₀::Int = 10`, the 'slack'. Must not be negative. When n₀ = 0 the worst-case is
18
- identical to that of bisection, but increacing n₀ provides greater oppotunity for
18
+ identical to that of bisection, but increasing n₀ provides greater opportunity for
19
19
superlinearity.
20
- - `scaled_κ₁::Float64 = 0.2`. Must not be negative. The recomended value is `0.2`.
20
+ - `scaled_κ₁::Float64 = 0.2`. Must not be negative. The recommended value is `0.2`.
21
21
Lower values produce tighter asymptotic behaviour, while higher values improve the
22
22
steady-state behaviour when truncation is not helpful.
23
23
- `κ₂::Real = 2`. Must lie in [1, 1+ϕ ≈ 2.62). Higher values allow for a greater
24
24
convergence rate, but also make the method more succeptable to worst-case performance.
25
- In practice, κ=1, 2 seems to work well due to the computational simplicity, as κ₂ is
25
+ In practice, κ₂ =1, 2 seems to work well due to the computational simplicity, as κ₂ is
26
26
used as an exponent in the method.
27
27
28
+ ### Computation of κ₁
29
+
30
+ In the current implementation, we compute κ₁ = scaled_κ₁·|Δx₀|^(1 - κ₂); this allows κ₁ to
31
+ adapt to the dimension of the problem in order to keep the proposed initial step
32
+ proportional to Δx₀.
33
+
28
34
### Worst Case Performance
29
35
30
36
n½ + `n₀` iterations, where n½ is the number of iterations using bisection
@@ -72,8 +78,8 @@ function SciMLBase.solve(prob::IntervalNonlinearProblem, alg::ITP, args...;
72
78
end
73
79
ϵ = abstol
74
80
# defining variables/cache
75
- k1 = alg. scaled_k1 / abs (right - left)
76
81
k2 = alg. k2
82
+ k1 = alg. scaled_k1 * abs (right - left)^ (1 - k2)
77
83
n0 = alg. n0
78
84
n_h = ceil (log2 (abs (right - left) / (2 * ϵ)))
79
85
mid = (left + right) / 2
0 commit comments