1
- for pType in (NonlinearProblem, NonlinearLeastSquaresProblem)
2
- @eval function SciMLBase. solve (
3
- prob:: $ (pType){<: Union{Number, <:AbstractArray} , iip,
4
- <: Union{<:Dual{T, V, P}, <:AbstractArray{<:Dual{T, V, P}}} },
5
- alg:: AbstractSimpleNonlinearSolveAlgorithm ,
6
- args... ;
7
- kwargs... ) where {T, V, P, iip}
8
- sol, partials = __nlsolve_ad (prob, alg, args... ; kwargs... )
9
- dual_soln = __nlsolve_dual_soln (sol. u, partials, prob. p)
10
- return SciMLBase. build_solution (
11
- prob, alg, dual_soln, sol. resid; sol. retcode, sol. stats, sol. original)
12
- end
1
+ function SciMLBase. solve (
2
+ prob:: NonlinearLeastSquaresProblem {<: Union{Number, <:AbstractArray} , iip,
3
+ <: Union{<:Dual{T, V, P}, <:AbstractArray{<:Dual{T, V, P}}} },
4
+ alg:: AbstractSimpleNonlinearSolveAlgorithm ,
5
+ args... ;
6
+ kwargs... ) where {T, V, P, iip}
7
+ sol, partials = __nlsolve_ad (prob, alg, args... ; kwargs... )
8
+ dual_soln = __nlsolve_dual_soln (sol. u, partials, prob. p)
9
+ return SciMLBase. build_solution (
10
+ prob, alg, dual_soln, sol. resid; sol. retcode, sol. stats, sol. original)
11
+ end
12
+
13
+ function SciMLBase. solve (
14
+ prob:: NonlinearProblem {<: Union{Number, <:AbstractArray} , iip,
15
+ <: Union{<:Dual{T, V, P}, <:AbstractArray{<:Dual{T, V, P}}} },
16
+ alg:: AbstractSimpleNonlinearSolveAlgorithm ,
17
+ args... ;
18
+ kwargs... ) where {T, V, P, iip}
19
+ prob = convert (ImmutableNonlinearProblem, prob)
20
+ sol, partials = __nlsolve_ad (prob, alg, args... ; kwargs... )
21
+ dual_soln = __nlsolve_dual_soln (sol. u, partials, prob. p)
22
+ return SciMLBase. build_solution (
23
+ prob, alg, dual_soln, sol. resid; sol. retcode, sol. stats, sol. original)
13
24
end
14
25
15
26
for algType in (Bisection, Brent, Alefeld, Falsi, ITP, Ridder)
@@ -31,7 +42,7 @@ for algType in (Bisection, Brent, Alefeld, Falsi, ITP, Ridder)
31
42
end
32
43
33
44
function __nlsolve_ad (
34
- prob:: Union{IntervalNonlinearProblem, NonlinearProblem} , alg, args... ; kwargs... )
45
+ prob:: Union{IntervalNonlinearProblem, NonlinearProblem, ImmutableNonlinearProblem } , alg, args... ; kwargs... )
35
46
p = value (prob. p)
36
47
if prob isa IntervalNonlinearProblem
37
48
tspan = value .(prob. tspan)
0 commit comments