11# # Lotka-Volterra
22
3- lotka = @ode_def_all LotkaVolterra begin
4- dx = a* x - b* x* y
5- dy = - c* y + d* x* y
6- end a b c d
3+ function lotka (du,u,p,t)
4+ x = u[1 ]
5+ y = u[2 ]
6+ du[1 ] = p[1 ]* x - p[2 ]* x* y
7+ du[2 ] = - p[3 ]* y + p[4 ]* x* y
8+ end
79
810"""
911Lotka-Voltera Equations (Non-stiff)
@@ -19,10 +21,16 @@ prob_ode_lotkavoltera = ODEProblem(lotka,[1.0,1.0],(0.0,1.0),[1.5,1.0,3.0,1.0])
1921
2022# # Fitzhugh-Nagumo
2123
22- fitz = @ode_def_all FitzhughNagumo begin
23- dv = v - v^ 3 / 3 - w + l
24- dw = τinv* (v + a - b* w)
25- end a b τinv l
24+ function fitz (du,u,p,t)
25+ v = u[1 ]
26+ w = u[2 ]
27+ a = p[1 ]
28+ b = p[2 ]
29+ τinv = p[3 ]
30+ l = p[4 ]
31+ du[1 ] = v - v^ 3 / 3 - w + l
32+ du[2 ] = τinv* (v + a - b* w)
33+ end
2634"""
2735Fitzhugh-Nagumo (Non-stiff)
2836
@@ -35,11 +43,15 @@ with initial condition ``v=w=1``
3543"""
3644prob_ode_fitzhughnagumo = ODEProblem (fitz,[1.0 ;1.0 ],(0.0 ,1.0 ),(0.7 ,0.8 ,1 / 12.5 ,0.5 ))
3745
46+
3847# Van der Pol Equations
39- van = @ode_def_all VanDerPol begin
40- dy = μ* ((1 - x^ 2 )* y - x)
41- dx = 1 * y
42- end μ
48+ @parameters t μ
49+ @variables x (t) y (t)
50+ @derivatives D' ~ t
51+ eqs = [D (x) ~ μ* ((1 - x^ 2 )* y - x),
52+ D (y) ~ y]
53+ de = ODESystem (eqs)
54+ van = ODEFunction (de, [x,y], [μ], jac= true , Wfact= true )
4355
4456"""
4557Van der Pol Equations
@@ -73,12 +85,14 @@ Stiff parameters.
7385prob_ode_vanstiff = ODEProblem (van,[0 ;sqrt (3 )],(0.0 ,1.0 ),1e6 )
7486
7587# ROBER
76-
77- rober = @ode_def_all Rober begin
78- dy₁ = - k₁* y₁+ k₃* y₂* y₃
79- dy₂ = k₁* y₁- k₂* y₂^ 2 - k₃* y₂* y₃
80- dy₃ = k₂* y₂^ 2
81- end k₁ k₂ k₃
88+ @parameters t k₁ k₂ k₃
89+ @variables y₁ (t) y₂ (t) y₃ (t)
90+ @derivatives D' ~ t
91+ eqs = [D (y₁) ~ - k₁* y₁+ k₃* y₂* y₃,
92+ D (y₂) ~ k₁* y₁- k₂* y₂^ 2 - k₃* y₂* y₃,
93+ D (y₃) ~ k₂* y₂^ 2 ]
94+ de = ODESystem (eqs)
95+ rober = ODEFunction (de, [y₁,y₂,y₃], [k₁,k₂,k₃], jac= true , Wfact= true )
8296
8397"""
8498The Robertson biochemical reactions: (Stiff)
@@ -137,11 +151,14 @@ prob_ode_threebody = ODEProblem(threebody,[0.994, 0.0, 0.0, big(-2.0015851063790
137151
138152# Rigid Body Equations
139153
140- rigid = @ode_def_all RigidBody begin
141- dy₁ = I₁* y₂* y₃
142- dy₂ = I₂* y₁* y₃
143- dy₃ = I₃* y₁* y₂
144- end I₁ I₂ I₃
154+ @parameters t I₁ I₂ I₃
155+ @variables y₁ (t) y₂ (t) y₃ (t)
156+ @derivatives D' ~ t
157+ eqs = [D (y₁) ~ I₁* y₂* y₃,
158+ D (y₂) ~ I₂* y₁* y₃,
159+ D (y₃) ~ I₃* y₁* y₂]
160+ de = ODESystem (eqs)
161+ rigid = ODEFunction (de, [y₁,y₂,y₃], [I₁,I₂,I₃], jac= true , Wfact= true )
145162
146163"""
147164Rigid Body Equations (Non-stiff)
@@ -251,6 +268,31 @@ const MM_linear =Matrix(Diagonal(0.5ones(4)))
251268mm_f = ODEFunction (mm_linear;analytic = (u0,p,t) -> exp (inv (MM_linear)* mm_A* t)* u0, mass_matrix= MM_linear)
252269prob_ode_mm_linear = ODEProblem (mm_f,rand (4 ),(0.0 ,1.0 ))
253270
271+
272+
273+
274+
275+ @parameters t p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12
276+ @variables y1 (t) y2 (t) y3 (t) y4 (t) y5 (t) y6 (t) y7 (t) y8 (t)
277+ @derivatives D' ~ t
278+ eqs = [D (y1) ~ - p1* y1 + p2* y2 + p3* y3 + p4,
279+ D (y2) ~ p1* y1 - p5* y2,
280+ D (y3) ~ - p6* y3 + p2* y4 + p7* y5,
281+ D (y4) ~ p3* y2 + p1* y3 - p8* y4,
282+ D (y5) ~ - p9* y5 + p2* y6 + p2* y7,
283+ D (y6) ~ - p10* y6* y8 + p11* y4 + p1* y5 -
284+ p2* y6 + p11* y7,
285+ D (y7) ~ p10* y6* y8 - p12* y7,
286+ D (y8) ~ - p10* y6* y8 + p12* y7]
287+ de = ODESystem (eqs)
288+ hires = ODEFunction (de, [y1,y2,y3,y4,y5,y6,y7,y8],
289+ [p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12],
290+ jac= true , Wfact= true )
291+
292+ u0 = zeros (8 )
293+ u0[1 ] = 1
294+ u0[8 ] = 0.0057
295+
254296"""
255297[Hires Problem](http://nbviewer.jupyter.org/github/JuliaDiffEq/DiffEqBenchmarks.jl/blob/master/StiffODE/Hires.ipynb) (Stiff)
256298
@@ -276,24 +318,21 @@ f(y) = \\begin{pmatrix}
276318
277319http://www.radford.edu/~thompson/vodef90web/problems/demosnodislin/Demos_Pitagora/DemoHires/demohires.pdf
278320"""
279- hires = @ode_def_all Hires begin
280- dy1 = - p1* y1 + p2* y2 + p3* y3 + p4
281- dy2 = p1* y1 - p5* y2
282- dy3 = - p6* y3 + p2* y4 + p7* y5
283- dy4 = p3* y2 + p1* y3 - p8* y4
284- dy5 = - p9* y5 + p2* y6 + p2* y7
285- dy6 = - p10* y6* y8 + p11* y4 + p1* y5 -
286- p2* y6 + p11* y7
287- dy7 = p10* y6* y8 - p12* y7
288- dy8 = - p10* y6* y8 + p12* y7
289- end p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12
290- u0 = zeros (8 )
291- u0[1 ] = 1
292- u0[8 ] = 0.0057
293321prob_ode_hires = ODEProblem (hires,u0,(0.0 ,321.8122 ), (1.71 , 0.43 , 8.32 , 0.0007 , 8.75 ,
294322 10.03 , 0.035 , 1.12 , 1.745 , 280.0 ,
295323 0.69 , 1.81 ))
296324
325+ @parameters t p1 p2 p3
326+ @variables y1 (t) y2 (t) y3 (t)
327+ @derivatives D' ~ t
328+ eqs = [D (y1) ~ p1* (y2+ y1* (1 - p2* y1- y2)),
329+ D (y2) ~ (y3- (1 + y1)* y2)/ p1,
330+ D (y3) ~ p3* (y1- y3)]
331+ de = ODESystem (eqs)
332+ jac = calculate_jacobian (de)
333+ ModelingToolkit. calculate_factorized_W (de)
334+ orego = ODEFunction (de, [y1,y2,y3], [p1,p2,p3], jac= true , Wfact= true )
335+
297336"""
298337[Orego Problem](http://nbviewer.jupyter.org/github/JuliaDiffEq/DiffEqBenchmarks.jl/blob/master/StiffODE/Orego.ipynb) (Stiff)
299338
@@ -316,9 +355,4 @@ where ``s=77.27``, ``w=0.161`` and ``q=8.375⋅10^{-6}``.
316355
317356http://www.radford.edu/~thompson/vodef90web/problems/demosnodislin/Demos_Pitagora/DemoOrego/demoorego.pdf
318357"""
319- orego = @ode_def_all Orego begin
320- dy1 = p1* (y2+ y1* (1 - p2* y1- y2))
321- dy2 = (y3- (1 + y1)* y2)/ p1
322- dy3 = p3* (y1- y3)
323- end p1 p2 p3
324358prob_ode_orego = ODEProblem (orego,[1.0 ,2.0 ,3.0 ],(0.0 ,30.0 ),[77.27 ,8.375e-6 ,0.161 ])
0 commit comments