Skip to content

Commit 5401e74

Browse files
ocotsgithub-actions[bot]
authored andcommitted
🤖 Format .jl files
1 parent c66f2ee commit 5401e74

12 files changed

Lines changed: 629 additions & 461 deletions

article/figures/chris.jl

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,30 @@ function hinit(F, x0, t0, tend, p, reltol, abstol)
3232
return tdir*min(100*h0, h1, tdir*(tend-t0)), tdir, f0
3333
end
3434

35+
A(λ) = [λ[1] 0 0; 0 λ[2] 0; 0 0 λ[1]-λ[2]]
36+
fun1(t, x) = A(λ)*x
3537

36-
A(λ) = [λ[1] 0 0 ; 0 λ[2] 0 ; 0 0 λ[1]-λ[2]]
37-
fun1(t,x) = A(λ)*x
38+
function fun2(t, xX)
39+
[fun1(xX[:, 1], λ, t) fun1(
40+
xX[:, 2:end], λ, t
41+
)+[xX[1, 1] 0; 0 xX[2, 1]; xX[3, 1] xX[3, 1]]]
42+
end
3843

39-
fun2(t,xX) = [fun1(xX[:,1],λ,t) fun1(xX[:,2:end],λ,t)+[xX[1,1] 0 ; 0 xX[2,1] ; xX[3,1] xX[3,1]] ]
40-
41-
t0 = 0. ; tend = 2.;
44+
t0 = 0.0;
45+
tend = 2.0;
4246
p = 2
43-
x0 = [0.,1.,1]
44-
reltol = 1.e-4; abstol = 1.e-4
47+
x0 = [0.0, 1.0, 1]
48+
reltol = 1.e-4;
49+
abstol = 1.e-4
4550

4651
hinit(fun1, x0, t0, tend, p, reltol, abstol)
4752

48-
xX0 = [funx0(λ) [0 1 ; 0 0 ; 0 0]]
53+
xX0 = [funx0(λ) [0 1; 0 0; 0 0]]
4954
hinit(fun2, xX0, t0, tend, p, reltol, abstol)
50-
RelTol = reltol*ones(n,p+1)
55+
RelTol = reltol*ones(n, p+1)
5156
AbsTol = RelTol
5257

5358
hinit(fun2, xX0, t0, tend, p, RelTol, AbsTol)
5459

55-
RelTol = [reltol*ones(n,1) Inf*ones(n,p)]/sqrt(p+1)
56-
AbsTol = [abstol*ones(n,1) Inf*ones(n,p)]/sqrt(p+1)
60+
RelTol = [reltol*ones(n, 1) Inf*ones(n, p)]/sqrt(p+1)
61+
AbsTol = [abstol*ones(n, 1) Inf*ones(n, p)]/sqrt(p+1)

article/figures/test-dopri-DP5-julia.jl

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using OrdinaryDiffEq, Test, DiffEqDevTools,
2-
ODEInterface, ODEInterfaceDiffEq
1+
using OrdinaryDiffEq, Test, DiffEqDevTools, ODEInterface, ODEInterfaceDiffEq
32

43
import ODEProblemLibrary: prob_ode_2Dlinear, prob_ode_linear
54

@@ -20,7 +19,7 @@ println("sol.t[2] - sol2.t[2] = ", sol.t[2] - sol2.t[2])
2019
@test sol.t[2] sol2.t[2]
2120

2221
prob = prob_ode_2Dlinear
23-
sol = solve(prob, DP5(), internalnorm = (u, t) -> sqrt(sum(abs2, u)))
22+
sol = solve(prob, DP5(); internalnorm=(u, t) -> sqrt(sum(abs2, u)))
2423

2524
# Change the norm due to error in dopri5.f
2625
sol2 = solve(prob, dopri5())
@@ -40,9 +39,9 @@ println("sol.t[2] - sol2.t[2] = ", sol.t[2] - sol2.t[2])
4039
prob = deepcopy(prob_ode_2Dlinear)
4140
#prob2 = ODEProblem(prob.f, prob.u0, (1.0, 0.0), 1.01)
4241
prob2 = ODEProblem(prob.f, prob.u0, (0.0, 1.0), 1.01)
43-
sol = solve(prob2, DP5(), internalnorm = (u, t) -> norm(u)/sqrt(length(u)))#sqrt(sum(abs2, u)))
42+
sol = solve(prob2, DP5(); internalnorm=(u, t) -> norm(u)/sqrt(length(u)))#sqrt(sum(abs2, u)))
4443

4544
# Change the norm due to error in dopri5.f
4645
sol2 = solve(prob2, dopri5())
4746
println("sol.t[2] - sol2.t[2] = ", sol.t[2] - sol2.t[2])
48-
@test sol.t[2] sol2.t[2]
47+
@test sol.t[2] sol2.t[2]

article/figures/test_myode43.jl

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
include("../../src/myode43/myode43.jl")
22

3-
43
# ẋ = [λ₁x₁ ; λ₂x₂ ; (λ₁-λ₂)x₃
54
# x(t0) = x₀(λ) = [λ₂, 1, 1]
65
# x(t,t0,x_0(λ),λ) = diag(exp(λ₁t),exp(λ₂t),exp((λ₁-λ₂)t))x₀(λ)
@@ -9,48 +8,52 @@ include("../../src/myode43/myode43.jl")
98
#
109
# ∂x0_flow
1110

12-
A(λ) = [λ[1] 0 0 ; 0 λ[2] 0 ; 0 0 λ[1]-λ[2]]
13-
fun1(x,λ,t) = A(λ)*x
14-
15-
fun2(xX,λ,t) = [fun1(xX[:,1],λ,t) fun1(xX[:,2:end],λ,t)+[xX[1,1] 0 ; 0 xX[2,1] ; xX[3,1] xX[3,1]] ]
16-
17-
18-
19-
t0 = 0. ; tf = 2.; tspan = (t0,tf);
20-
λ = [1.,2]; p = length(λ);
21-
funx0(λ) = [λ[2],1.,1];
11+
A(λ) = [λ[1] 0 0; 0 λ[2] 0; 0 0 λ[1]-λ[2]]
12+
fun1(x, λ, t) = A(λ)*x
13+
14+
function fun2(xX, λ, t)
15+
[fun1(xX[:, 1], λ, t) fun1(
16+
xX[:, 2:end], λ, t
17+
)+[xX[1, 1] 0; 0 xX[2, 1]; xX[3, 1] xX[3, 1]]]
18+
end
19+
20+
t0 = 0.0;
21+
tf = 2.0;
22+
tspan = (t0, tf);
23+
λ = [1.0, 2];
24+
p = length(λ);
25+
funx0(λ) = [λ[2], 1.0, 1];
2226
x0 = funx0(λ)
2327
n = length(x0)
24-
reltol = 1.e-4; abstol = 1.e-4
25-
myode43(fun1,x0,λ,tspan,reltol,abstol)
28+
reltol = 1.e-4;
29+
abstol = 1.e-4
30+
myode43(fun1, x0, λ, tspan, reltol, abstol)
2631

27-
xX0 = [x0 [0 1 ; 0 0 ; 0 0]]
32+
xX0 = [x0 [0 1; 0 0; 0 0]]
2833

29-
myode43(fun2,xX0,λ,tspan,reltol,abstol)
34+
myode43(fun2, xX0, λ, tspan, reltol, abstol)
3035

31-
RelTol = reltol*ones(n,p+1)
36+
RelTol = reltol*ones(n, p+1)
3237
AbsTol = RelTol
3338

34-
myode43(fun2,xX0,λ,tspan,RelTol,AbsTol)
39+
myode43(fun2, xX0, λ, tspan, RelTol, AbsTol)
3540

36-
RelTol = [reltol*ones(n,1) Inf*ones(n,p)]/sqrt(p+1)
37-
AbsTol = [abstol*ones(n,1) Inf*ones(n,p)]/sqrt(p+1)
41+
RelTol = [reltol*ones(n, 1) Inf*ones(n, p)]/sqrt(p+1)
42+
AbsTol = [abstol*ones(n, 1) Inf*ones(n, p)]/sqrt(p+1)
3843

39-
inith(fun1,x0,λ,t0,abstol,reltol)
44+
inith(fun1, x0, λ, t0, abstol, reltol)
4045

41-
inith(fun2,xX0,λ,t0,abstol,reltol)
42-
RelTol = reltol*ones(n,p+1)
46+
inith(fun2, xX0, λ, t0, abstol, reltol)
47+
RelTol = reltol*ones(n, p+1)
4348
AbsTol = RelTol
44-
inith(fun2,xX0,λ,t0,AbsTol,RelTol)
45-
49+
inith(fun2, xX0, λ, t0, AbsTol, RelTol)
4650

4751
epsi = eps()
4852
epsi = 0
49-
xX0 = [x0 [epsi 1 ; epsi epsi ; epsi epsi]]
53+
xX0 = [x0 [epsi 1; epsi epsi; epsi epsi]]
5054
my_Inf = prevfloat(typemax(Float64))
5155
#my_Inf = Inf
52-
RelTol = [reltol*ones(n,1) my_Inf*ones(n,p)]/sqrt(p+1)
53-
AbsTol = [abstol*ones(n,1) my_Inf*ones(n,p)]/sqrt(p+1)
54-
inith(fun2,xX0,λ,t0,AbsTol,RelTol)
55-
myode43(fun2,xX0,λ,tspan,RelTol,AbsTol)
56-
56+
RelTol = [reltol*ones(n, 1) my_Inf*ones(n, p)]/sqrt(p+1)
57+
AbsTol = [abstol*ones(n, 1) my_Inf*ones(n, p)]/sqrt(p+1)
58+
inith(fun2, xX0, λ, t0, AbsTol, RelTol)
59+
myode43(fun2, xX0, λ, tspan, RelTol, AbsTol)

article/figures/test_zygote.jl

Lines changed: 74 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -13,81 +13,120 @@ include("../../src/CTDiffFlow.jl")
1313
using .CTDiffFlow
1414
include("../../src/myode43/myode43.jl")
1515

16-
function my_euler(fun,t0,x0,tf,λ,N)
17-
ti = t0; xi = x0
16+
function my_euler(fun, t0, x0, tf, λ, N)
17+
ti = t0;
18+
xi = x0
1819
h = (tf-t0)/N
1920
for i in 1:N
20-
xi += h*fun(xi,λ,ti)
21+
xi += h*fun(xi, λ, ti)
2122
ti = ti+h
2223
end
2324
return xi
2425
end
2526

26-
2727
# Definition of the edo
28-
A(λ) = [λ[1] 0 0 ; 0 λ[2] 0 ; 0 0 λ[1]-λ[2]]
29-
fun1(x,λ,t) = A(λ)*x
30-
funx0(λ) = [λ[2],1.,1];
28+
A(λ) = [λ[1] 0 0; 0 λ[2] 0; 0 0 λ[1]-λ[2]]
29+
fun1(x, λ, t) = A(λ)*x
30+
funx0(λ) = [λ[2], 1.0, 1];
3131
N = 10
32-
t0 = 0. ; tf = 1.; tspan = (t0,tf);
33-
λ = [1.,2];
32+
t0 = 0.0;
33+
tf = 1.0;
34+
tspan = (t0, tf);
35+
λ = [1.0, 2];
3436
reltol = 1.e-8
3537
abstol = reltol
3638
# ∂λ_flow(λ)
37-
sol_∂λ_flow = [λ[2]*exp(λ[1]*tf) exp(λ[1]*tf)
38-
0. tf*exp(λ[2]*tf)
39-
tf*exp((λ[1]-λ[2])*tf) -tf*exp((λ[1]-λ[2])*tf)]
40-
39+
sol_∂λ_flow = [
40+
λ[2]*exp(λ[1]*tf) exp(λ[1]*tf)
41+
0.0 tf*exp(λ[2]*tf)
42+
tf*exp((λ[1]-λ[2])*tf) -tf*exp((λ[1]-λ[2])*tf)
43+
]
4144

4245
#dict_Zygote = Dict(:∂λ_sol => sol_∂λ_flow)
4346
#dict_ForwardDiff = Dict(:∂λ_sol => sol_∂λ_flow)
4447

45-
df = DataFrame(AutoDiff = String[], algo=String[], Jacobian = Matrix{<:Real}[])
48+
df = DataFrame(; AutoDiff=String[], algo=String[], Jacobian=Matrix{<:Real}[])
4649
push!(df, ("solution", "", sol_∂λ_flow))
4750

4851
# Zygote with my_euler
49-
_flow(λ) = my_euler(fun1,t0,funx0(λ),tf,λ,N)
52+
_flow(λ) = my_euler(fun1, t0, funx0(λ), tf, λ, N)
5053
#dict_Zygote[:my_euler] = jacobian(_flow,AutoZygote(),λ)
5154
#dict_ForwardDiff[:my_euler] = jacobian(_flow,AutoForwardDiff(),λ)
52-
push!(df, ("Zygote", "my-euler", jacobian(_flow,AutoZygote(),λ)))
53-
push!(df, ("ForwardDiff", "my-euler", jacobian(_flow,AutoForwardDiff(),λ)))
55+
push!(df, ("Zygote", "my-euler", jacobian(_flow, AutoZygote(), λ)))
56+
push!(df, ("ForwardDiff", "my-euler", jacobian(_flow, AutoForwardDiff(), λ)))
5457
# Zygote with numerical integration
5558
function _flow_int(λ)
56-
ivp = ODEProblem(fun1, funx0(λ), (t0,tf), λ)
57-
#algo = get(ode_kwargs, :alg, Tsit5())
58-
#println("algo = ", algo)
59-
60-
sol = solve(ivp, alg = Euler(),reltol=reltol,abstol=abstol,adaptive=false, dt = (tf-t0)/N)
61-
return sol.u[end]
59+
ivp = ODEProblem(fun1, funx0(λ), (t0, tf), λ)
60+
#algo = get(ode_kwargs, :alg, Tsit5())
61+
#println("algo = ", algo)
62+
63+
sol = solve(
64+
ivp; alg=Euler(), reltol=reltol, abstol=abstol, adaptive=false, dt=(tf-t0)/N
65+
)
66+
return sol.u[end]
6267
end
6368

6469
#dict_Zygote[:Euler] = jacobian(_flow_int,AutoZygote(),λ)
6570
#dict_ForwardDiff[:Euler] = jacobian(_flow_int,AutoForwardDiff(),λ)
66-
push!(df, ("Zygote", "Euler", jacobian(_flow_int,AutoZygote(),λ)))
67-
push!(df, ("ForwardDiff", "Euler", jacobian(_flow_int,AutoForwardDiff(),λ)))
71+
push!(df, ("Zygote", "Euler", jacobian(_flow_int, AutoZygote(), λ)))
72+
push!(df, ("ForwardDiff", "Euler", jacobian(_flow_int, AutoForwardDiff(), λ)))
6873
# Zygote with ∂λ_flow
69-
∂λ_flow = CTDiffFlow.build_∂λ_flow(fun1,t0,funx0,tf,λ; backend=AutoZygote())
74+
∂λ_flow = CTDiffFlow.build_∂λ_flow(fun1, t0, funx0, tf, λ; backend=AutoZygote())
7075
#dict_Zygote[:CTDiffFlowZygoteEuler] = ∂λ_flow(t0,funx0,tf,λ;reltol=reltol,abstol=abstol, alg = Euler(),adaptive=false, dt = (tf-t0)/N)#,print_times=false)
71-
push!(df, ("Zygote", "CTDiffFlow-Euler", ∂λ_flow(t0,funx0,tf,λ;reltol=reltol,abstol=abstol, alg = Euler(),adaptive=false, dt = (tf-t0)/N)))
76+
push!(
77+
df,
78+
(
79+
"Zygote",
80+
"CTDiffFlow-Euler",
81+
∂λ_flow(
82+
t0,
83+
funx0,
84+
tf,
85+
λ;
86+
reltol=reltol,
87+
abstol=abstol,
88+
alg=Euler(),
89+
adaptive=false,
90+
dt=(tf-t0)/N,
91+
),
92+
),
93+
)
7294

7395
# ForwardDiff with ∂λ_flow
74-
∂λ_flow = CTDiffFlow.build_∂λ_flow(fun1,t0,funx0,tf,λ; backend=AutoForwardDiff())
96+
∂λ_flow = CTDiffFlow.build_∂λ_flow(fun1, t0, funx0, tf, λ; backend=AutoForwardDiff())
7597
#dict_ForwardDiff[:CTDiffFlowForwardDiffEuler] = ∂λ_flow(t0,funx0,tf,λ;reltol=reltol,abstol=abstol, alg = Euler(),adaptive=false, dt = (tf-t0)/N)#,print_times=false)
76-
push!(df, ("ForwardDiff", "my-euler", ∂λ_flow(t0,funx0,tf,λ;reltol=reltol,abstol=abstol, alg = Euler(),adaptive=false, dt = (tf-t0)/N)))
98+
push!(
99+
df,
100+
(
101+
"ForwardDiff",
102+
"my-euler",
103+
∂λ_flow(
104+
t0,
105+
funx0,
106+
tf,
107+
λ;
108+
reltol=reltol,
109+
abstol=abstol,
110+
alg=Euler(),
111+
adaptive=false,
112+
dt=(tf-t0)/N,
113+
),
114+
),
115+
)
77116

78117
function _flow(λ)
79-
T, X = myode43(fun1,funx0(λ),λ,(t0,tf),abstol,reltol)
118+
T, X = myode43(fun1, funx0(λ), λ, (t0, tf), abstol, reltol)
80119
return X[end]
81120
end
82121

83122
#dict_Zygote[:myode43Zygote] = jacobian(_flow,AutoZygote(),λ)
84123
#dict_ForwardDiff[:myode43ForwardDiff] = jacobian(_flow,AutoForwardDiff(),λ)
85124
push!(df, ("Zygote", "my-ode43", [NaN;;]))
86-
push!(df, ("ForwardDiff", "my-ode43", jacobian(_flow,AutoForwardDiff(),λ)))
125+
push!(df, ("ForwardDiff", "my-ode43", jacobian(_flow, AutoForwardDiff(), λ)))
87126

88-
jacobian(_flow,AutoForwardDiff(),λ)
127+
jacobian(_flow, AutoForwardDiff(), λ)
89128

90-
latexify(df,arraystyle=:pmatrix,env=:tabular)
129+
latexify(df; arraystyle=:pmatrix, env=:tabular)
91130

92-
sol_Zygote = df[in.(df.AutoDiff, Ref(["solution","Zygote"])),:]
93-
sol_ForwardDiff = df[in.(df.AutoDiff, Ref(["solution", "ForwardDiff"])),:]
131+
sol_Zygote = df[in.(df.AutoDiff, Ref(["solution", "Zygote"])), :]
132+
sol_ForwardDiff = df[in.(df.AutoDiff, Ref(["solution", "ForwardDiff"])), :]

0 commit comments

Comments
 (0)