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,17 @@ 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+ jac = calculate_jacobian (de)
55+ # ModelingToolkit.generate_factorized_W(de)
56+ van = ODEFunction (de, [x,y], [μ])
4357
4458"""
4559Van der Pol Equations
@@ -73,12 +87,16 @@ Stiff parameters.
7387prob_ode_vanstiff = ODEProblem (van,[0 ;sqrt (3 )],(0.0 ,1.0 ),1e6 )
7488
7589# 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₃
90+ @parameters t k₁ k₂ k₃
91+ @variables y₁ (t) y₂ (t) y₃ (t)
92+ @derivatives D' ~ t
93+ eqs = [D (y₁) ~ - k₁* y₁+ k₃* y₂* y₃,
94+ D (y₂) ~ k₁* y₁- k₂* y₂^ 2 - k₃* y₂* y₃,
95+ D (y₃) ~ k₂* y₂^ 2 ]
96+ de = ODESystem (eqs)
97+ jac = calculate_jacobian (de)
98+ # ModelingToolkit.generate_factorized_W(de)
99+ rober = ODEFunction (de, [y₁,y₂,y₃], [k₁,k₂,k₃])
82100
83101"""
84102The Robertson biochemical reactions: (Stiff)
@@ -137,11 +155,16 @@ prob_ode_threebody = ODEProblem(threebody,[0.994, 0.0, 0.0, big(-2.0015851063790
137155
138156# Rigid Body Equations
139157
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₃
158+ @parameters t I₁ I₂ I₃
159+ @variables y₁ (t) y₂ (t) y₃ (t)
160+ @derivatives D' ~ t
161+ eqs = [D (y₁) ~ I₁* y₂* y₃,
162+ D (y₂) ~ I₂* y₁* y₃,
163+ D (y₃) ~ I₃* y₁* y₂]
164+ de = ODESystem (eqs)
165+ jac = calculate_jacobian (de)
166+ # ModelingToolkit.generate_factorized_W(de)
167+ rigid = ODEFunction (de, [y₁,y₂,y₃], [I₁,I₂,I₃])
145168
146169"""
147170Rigid Body Equations (Non-stiff)
@@ -251,6 +274,32 @@ const MM_linear =Matrix(Diagonal(0.5ones(4)))
251274mm_f = ODEFunction (mm_linear;analytic = (u0,p,t) -> exp (inv (MM_linear)* mm_A* t)* u0, mass_matrix= MM_linear)
252275prob_ode_mm_linear = ODEProblem (mm_f,rand (4 ),(0.0 ,1.0 ))
253276
277+
278+
279+
280+
281+ @parameters t p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12
282+ @variables y1 (t) y2 (t) y3 (t) y4 (t) y5 (t) y6 (t) y7 (t) y8 (t)
283+ @derivatives D' ~ t
284+ eqs = [D (y1) ~ - p1* y1 + p2* y2 + p3* y3 + p4,
285+ D (y2) ~ p1* y1 - p5* y2,
286+ D (y3) ~ - p6* y3 + p2* y4 + p7* y5,
287+ D (y4) ~ p3* y2 + p1* y3 - p8* y4,
288+ D (y5) ~ - p9* y5 + p2* y6 + p2* y7,
289+ D (y6) ~ - p10* y6* y8 + p11* y4 + p1* y5 -
290+ p2* y6 + p11* y7,
291+ D (y7) ~ p10* y6* y8 - p12* y7,
292+ D (y8) ~ - p10* y6* y8 + p12* y7]
293+ de = ODESystem (eqs)
294+ jac = calculate_jacobian (de)
295+ # ModelingToolkit.generate_factorized_W(de)
296+ hires = ODEFunction (de, [y1,y2,y3,y4,y5,y6,y7,y8],
297+ [p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12])
298+
299+ u0 = zeros (8 )
300+ u0[1 ] = 1
301+ u0[8 ] = 0.0057
302+
254303"""
255304[Hires Problem](http://nbviewer.jupyter.org/github/JuliaDiffEq/DiffEqBenchmarks.jl/blob/master/StiffODE/Hires.ipynb) (Stiff)
256305
@@ -276,24 +325,21 @@ f(y) = \\begin{pmatrix}
276325
277326http://www.radford.edu/~thompson/vodef90web/problems/demosnodislin/Demos_Pitagora/DemoHires/demohires.pdf
278327"""
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
293328prob_ode_hires = ODEProblem (hires,u0,(0.0 ,321.8122 ), (1.71 , 0.43 , 8.32 , 0.0007 , 8.75 ,
294329 10.03 , 0.035 , 1.12 , 1.745 , 280.0 ,
295330 0.69 , 1.81 ))
296331
332+ @parameters t p1 p2 p3
333+ @variables y1 (t) y2 (t) y3 (t)
334+ @derivatives D' ~ t
335+ eqs = [D (y1) ~ p1* (y2+ y1* (1 - p2* y1- y2)),
336+ D (y2) ~ (y3- (1 + y1)* y2)/ p1,
337+ D (y3) ~ p3* (y1- y3)]
338+ de = ODESystem (eqs)
339+ jac = calculate_jacobian (de)
340+ # ModelingToolkit.generate_factorized_W(de)
341+ orego = ODEFunction (de, [y1,y2,y3], [p1,p2,p3])
342+
297343"""
298344[Orego Problem](http://nbviewer.jupyter.org/github/JuliaDiffEq/DiffEqBenchmarks.jl/blob/master/StiffODE/Orego.ipynb) (Stiff)
299345
@@ -316,9 +362,4 @@ where ``s=77.27``, ``w=0.161`` and ``q=8.375⋅10^{-6}``.
316362
317363http://www.radford.edu/~thompson/vodef90web/problems/demosnodislin/Demos_Pitagora/DemoOrego/demoorego.pdf
318364"""
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
324365prob_ode_orego = ODEProblem (orego,[1.0 ,2.0 ,3.0 ],(0.0 ,30.0 ),[77.27 ,8.375e-6 ,0.161 ])
0 commit comments