@@ -54,8 +54,7 @@ prob_ode_fitzhughnagumo = ODEProblem(fitz, [1.0; 1.0], (0.0, 1.0),
54
54
55
55
eqs = [D (y) ~ μ * ((1 - x^ 2 ) * y - x),
56
56
D (x) ~ y]
57
- de = ODESystem (eqs, t; name = :van_der_pol ) |> structural_simplify |> complete
58
- van = ODEFunction (de, [y, x], [μ], jac = true , eval_module = @__MODULE__ )
57
+ van = ODESystem (eqs, t; name = :van_der_pol ) |> structural_simplify |> complete
59
58
60
59
"""
61
60
Van der Pol Equations
@@ -67,11 +66,11 @@ Van der Pol Equations
67
66
\\ frac{dy}{dt} = μ((1-x^2)y -x)
68
67
```
69
68
70
- with ``μ=1.0`` and ``u_0=[0, \\ sqrt{3}]``
69
+ with ``μ=1.0`` and ``u_0=[x => \\ sqrt{3}, y => 0 ]``
71
70
72
71
Non-stiff parameters.
73
72
"""
74
- prob_ode_vanderpol = ODEProblem (van, [0 ; sqrt (3 )], (0.0 , 1.0 ), 1.0 )
73
+ prob_ode_vanderpol = ODEProblem (van, [y => 0 , x => sqrt (3 )], (0.0 , 1.0 ), [μ => 1.0 ], jac = true , eval_module = @__MODULE__ )
75
74
76
75
"""
77
76
Van der Pol Equations
@@ -83,11 +82,11 @@ Van der Pol Equations
83
82
\\ frac{dy}{dt} = μ((1-x^2)y -x)
84
83
```
85
84
86
- with ``μ=10^6`` and ``u_0=[0, \\ sqrt{3}]``
85
+ with ``μ=10^6`` and ``u_0=[x => \\ sqrt{3}, y => 0 ]``
87
86
88
87
Stiff parameters.
89
88
"""
90
- prob_ode_vanderpol_stiff = ODEProblem (van, [0 ; sqrt (3 )], (0.0 , 1.0 ), 1e6 )
89
+ prob_ode_vanderpol_stiff = ODEProblem (van, [y => 0 , x => sqrt (3 )], (0.0 , 1.0 ), [μ => 1e6 ], jac = true , eval_module = @__MODULE__ )
91
90
92
91
# ROBER
93
92
@parameters k₁ k₂ k₃
@@ -96,8 +95,7 @@ prob_ode_vanderpol_stiff = ODEProblem(van, [0; sqrt(3)], (0.0, 1.0), 1e6)
96
95
eqs = [D (y₁) ~ - k₁ * y₁ + k₃ * y₂ * y₃,
97
96
D (y₂) ~ k₁ * y₁ - k₂ * y₂^ 2 - k₃ * y₂ * y₃,
98
97
D (y₃) ~ k₂ * y₂^ 2 ]
99
- de = ODESystem (eqs, t; name = :rober ) |> structural_simplify |> complete
100
- rober = ODEFunction (de, [y₁, y₂, y₃], [k₁, k₂, k₃], jac = true , eval_module = @__MODULE__ )
98
+ rober = ODESystem (eqs, t; name = :rober ) |> structural_simplify |> complete
101
99
102
100
"""
103
101
The Robertson biochemical reactions: (Stiff)
@@ -118,7 +116,7 @@ Hairer Norsett Wanner Solving Ordinary Differential Equations I - Nonstiff Probl
118
116
119
117
Usually solved on ``[0,1e11]``
120
118
"""
121
- prob_ode_rober = ODEProblem (rober, [1.0 ; 0.0 ; 0.0 ], (0.0 , 1e11 ), (0.04 , 3e7 , 1e4 ))
119
+ prob_ode_rober = ODEProblem (rober, [y₁, y₂, y₃] .=> [ 1.0 ; 0.0 ; 0.0 ], (0.0 , 1e11 ), [k₁, k₂, k₃] .=> (0.04 , 3e7 , 1e4 ), jac = true , eval_module = @__MODULE__ )
122
120
123
121
# Three Body
124
122
const threebody_μ = big (0.012277471 );
@@ -177,8 +175,7 @@ prob_ode_threebody = ODEProblem(threebody,
177
175
eqs = [D (y₁) ~ I₁ * y₂ * y₃,
178
176
D (y₂) ~ I₂ * y₁ * y₃,
179
177
D (y₃) ~ I₃ * y₁ * y₂]
180
- de = ODESystem (eqs, t; name = :rigid_body ) |> structural_simplify |> complete
181
- rigid = ODEFunction (de, [y₁, y₂, y₃], [I₁, I₂, I₃], jac = true , eval_module = @__MODULE__ )
178
+ rigid = ODESystem (eqs, t; name = :rigid_body ) |> structural_simplify |> complete
182
179
183
180
"""
184
181
Rigid Body Equations (Non-stiff)
@@ -203,7 +200,9 @@ or Hairer Norsett Wanner Solving Ordinary Differential Equations I - Nonstiff Pr
203
200
204
201
Usually solved from 0 to 20.
205
202
"""
206
- prob_ode_rigidbody = ODEProblem (rigid, [1.0 , 0.0 , 0.9 ], (0.0 , 20.0 ), (- 2.0 , 1.25 , - 0.5 ))
203
+ prob_ode_rigidbody = ODEProblem (rigid, [y₁, y₂, y₃] .=> [1.0 , 0.0 , 0.9 ], (0.0 , 20.0 ),
204
+ [I₁, I₂, I₃] .=> (- 2.0 , 1.25 , - 0.5 ), jac = true ,
205
+ eval_module = @__MODULE__ )
207
206
208
207
# Pleiades Problem
209
208
@@ -360,10 +359,7 @@ eqs = [D(y1) ~ -p1 * y1 + p2 * y2 + p3 * y3 + p4,
360
359
p2 * y6 + p11 * y7,
361
360
D (y7) ~ p10 * y6 * y8 - p12 * y7,
362
361
D (y8) ~ - p10 * y6 * y8 + p12 * y7]
363
- de = ODESystem (eqs, t; name = :hires ) |> structural_simplify |> complete
364
- hires = ODEFunction (de, [y1, y2, y3, y4, y5, y6, y7, y8],
365
- [p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12],
366
- jac = true )
362
+ hires = ODESystem (eqs, t; name = :hires ) |> structural_simplify |> complete
367
363
368
364
u0 = zeros (8 )
369
365
u0[1 ] = 1
@@ -391,20 +387,18 @@ where ``f`` is defined by
391
387
Reference: [demohires.pdf](http://www.radford.edu/~thompson/vodef90web/problems/demosnodislin/Demos_Pitagora/DemoHires/demohires.pdf)
392
388
Notebook: [Hires.ipynb](http://nbviewer.jupyter.org/github/JuliaDiffEq/DiffEqBenchmarks.jl/blob/master/StiffODE/Hires.ipynb)
393
389
"""
394
- prob_ode_hires = ODEProblem (hires, u0, (0.0 , 321.8122 ),
395
- (1.71 , 0.43 , 8.32 , 0.0007 , 8.75 ,
396
- 10.03 , 0.035 , 1.12 , 1.745 , 280.0 ,
397
- 0.69 , 1.81 ))
390
+ prob_ode_hires = ODEProblem (hires, [y1, y2, y3, y4, y5, y6, y7, y8] .=> u0, (0.0 , 321.8122 ),
391
+ [p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12] .=> (1.71 , 0.43 , 8.32 , 0.0007 , 8.75 ,
392
+ 10.03 , 0.035 , 1.12 , 1.745 , 280.0 ,
393
+ 0.69 , 1.81 ), jac = true , eval_module = @__MODULE__ )
398
394
399
395
@parameters p1 p2 p3
400
396
@variables y1 (t) y2 (t) y3 (t)
401
397
402
398
eqs = [D (y1) ~ p1 * (y2 + y1 * (1 - p2 * y1 - y2)),
403
399
D (y2) ~ (y3 - (1 + y1) * y2) / p1,
404
400
D (y3) ~ p3 * (y1 - y3)]
405
- de = ODESystem (eqs, t; name = :orego ) |> structural_simplify |> complete
406
- jac = calculate_jacobian (de)
407
- orego = ODEFunction (de, [y1, y2, y3], [p1, p2, p3], jac = true , eval_module = @__MODULE__ )
401
+ orego = ODESystem (eqs, t; name = :orego ) |> structural_simplify |> complete
408
402
409
403
"""
410
404
Orego Problem (Stiff)
@@ -424,4 +418,4 @@ where ``s=77.27``, ``w=0.161`` and ``q=8.375⋅10^{-6}``.
424
418
Reference: [demoorego.pdf](http://www.radford.edu/~thompson/vodef90web/problems/demosnodislin/Demos_Pitagora/DemoOrego/demoorego.pdf)
425
419
Notebook: [Orego.ipynb](http://nbviewer.jupyter.org/github/JuliaDiffEq/DiffEqBenchmarks.jl/blob/master/StiffODE/Orego.ipynb)
426
420
"""
427
- prob_ode_orego = ODEProblem (orego, [1.0 , 2.0 , 3.0 ], (0.0 , 30.0 ), [77.27 , 8.375e-6 , 0.161 ])
421
+ prob_ode_orego = ODEProblem (orego, [y1, y2, y3] .=> [ 1.0 , 2.0 , 3.0 ], (0.0 , 30.0 ), [p1, p2, p3] .=> [ 77.27 , 8.375e-6 , 0.161 ], jac = true , eval_module = @__MODULE__ )
0 commit comments