|
20 | 20 | sol = solve(prob, NewtonRaphson())
|
21 | 21 |
|
22 | 22 | u0 = zeros(2)
|
23 |
| - cache = zeros(3) |
| 23 | + p = zeros(3) |
24 | 24 |
|
25 | 25 | function f1(du, u, (cache, p))
|
26 | 26 | du[1] = cos(u[2]) - u[1]
|
27 | 27 | du[2] = sin(u[1] + u[2]) + u[2]
|
28 | 28 | end
|
29 | 29 | explicitfun1(cache, sols) = nothing
|
30 | 30 | prob1 = NonlinearProblem(
|
31 |
| - NonlinearFunction{true, SciMLBase.NoSpecialize}(f1), zeros(2), cache) |
| 31 | + NonlinearFunction{true, SciMLBase.NoSpecialize}(f1), zeros(2), p) |
32 | 32 | sol1 = solve(prob1, NewtonRaphson())
|
33 | 33 |
|
34 |
| - function f2(du, u, (cache, p)) |
| 34 | + function f2(du, u, p) |
35 | 35 | du[1] = 2u[2] + u[1] + 1.0
|
36 | 36 | du[2] = u[3]^2 + u[2]
|
37 | 37 | du[3] = u[1]^2 + u[3]
|
38 | 38 | end
|
39 | 39 | explicitfun2(cache, sols) = nothing
|
40 | 40 | prob2 = NonlinearProblem(
|
41 |
| - NonlinearFunction{true, SciMLBase.NoSpecialize}(f2), zeros(3), cache) |
| 41 | + NonlinearFunction{true, SciMLBase.NoSpecialize}(f2), zeros(3), p) |
42 | 42 | sol2 = solve(prob2, NewtonRaphson())
|
43 | 43 |
|
44 |
| - function f3(du, u, (cache, p)) |
45 |
| - du[1] = cache[1] + 2.0u[1] + 2.5u[2] + 1.5u[3] |
46 |
| - du[2] = cache[2] + 4.0u[1] - 1.5u[2] + 1.5u[3] |
47 |
| - du[3] = cache[3] + +u[1] - u[2] - u[3] |
| 44 | + function f3(du, u, p) |
| 45 | + du[1] = p[1] + 2.0u[1] + 2.5u[2] + 1.5u[3] |
| 46 | + du[2] = p[2] + 4.0u[1] - 1.5u[2] + 1.5u[3] |
| 47 | + du[3] = p[3] + +u[1] - u[2] - u[3] |
48 | 48 | end
|
49 | 49 | prob3 = NonlinearProblem(
|
50 |
| - NonlinearFunction{true, SciMLBase.NoSpecialize}(f3), zeros(3), cache) |
51 |
| - function explicitfun3(cache, sols) |
52 |
| - cache[1] = sols[1][1] + sols[1][2] + sols[2][1] + sols[2][2] + sols[2][3] |
53 |
| - cache[2] = sols[1][1] + sols[1][2] + sols[2][1] + 2.0sols[2][2] + sols[2][3] |
54 |
| - cache[3] = sols[1][1] + 2.0sols[1][2] + 3.0sols[2][1] + 5.0sols[2][2] + |
| 50 | + NonlinearFunction{true, SciMLBase.NoSpecialize}(f3), zeros(3), p) |
| 51 | + function explicitfun3(p, sols) |
| 52 | + p[1] = sols[1][1] + sols[1][2] + sols[2][1] + sols[2][2] + sols[2][3] |
| 53 | + p[2] = sols[1][1] + sols[1][2] + sols[2][1] + 2.0sols[2][2] + sols[2][3] |
| 54 | + p[3] = sols[1][1] + 2.0sols[1][2] + 3.0sols[2][1] + 5.0sols[2][2] + |
55 | 55 | 6.0sols[2][3]
|
56 | 56 | end
|
57 | 57 | explicitfun3(cache, [sol1, sol2])
|
|
0 commit comments