@@ -76,7 +76,7 @@ function's documentation string.
7676
7777"""
7878function chua (u0 = [0.7 , 0.0 , 0.0 ]; a = 15.6 , b = 25.58 , m0 = - 8 / 7 , m1 = - 5 / 7 )
79- return CoupledODEs (chua_rule, u0, [a, b, m0, m1], chua_jacob )
79+ return CoupledODEs (chua_rule, u0, [a, b, m0, m1])
8080end
8181@inbounds function chua_rule (u, p, t)
8282 du1 = p[1 ] * (u[2 ] - u[1 ] - chua_element (u[1 ], p[3 ], p[4 ]))
8585 return SVector {3} (du1, du2, du3)
8686end
8787function chua_jacob (u, p, t)
88- return SMatrix {3,3} (- p[1 ]* (1 + chua_element_derivative (u[1 ], p[3 ], p[4 ])), p[1 ], 0.0 ,
89- 1.0 , - 1.0 , 1.0 ,
90- 0.0 , - p[2 ], 0.0 )
88+ return SMatrix {3,3} (- p[1 ]* (1 + chua_element_derivative (u[1 ], p[3 ], p[4 ])),1.0 ,0.0 ,p[1 ],- 1.0 ,- p[2 ],0.0 ,1.0 ,0.0 )
9189end
9290# Helper functions for Chua's circuit.
9391function chua_element (x, m0, m1)
@@ -123,7 +121,7 @@ function's documentation string.
123121[^Rössler1976]: O. E. Rössler, Phys. Lett. **57A**, pp 397 (1976)
124122"""
125123function roessler (u0= [1.0 , - 2.0 , 0.1 ]; a = 0.2 , b = 0.2 , c = 5.7 )
126- return CoupledODEs (roessler_rule, u0, [a, b, c], roessler_jacob )
124+ return CoupledODEs (roessler_rule, u0, [a, b, c])
127125end
128126@inbounds function roessler_rule (u, p, t)
129127 du1 = - u[2 ]- u[3 ]
132130 return SVector {3} (du1, du2, du3)
133131end
134132function roessler_jacob (u, p, t)
135- return SMatrix {3,3} (0.0 , - 1.0 , - 1.0 ,
136- 1.0 , p[1 ], 0.0 ,
137- u[3 ], 0.0 , u[1 ]- p[3 ])
133+ return SMatrix {3,3} (0.0 ,1.0 ,u[3 ],- 1.0 ,p[1 ],0.0 ,- 1.0 ,0.0 ,u[1 ]- p[3 ])
138134end
139135
140136"""
@@ -392,7 +388,7 @@ function's documentation string.
392388[^Gissinger2012]: C. Gissinger, Eur. Phys. J. B **85**, 4, pp 1-12 (2012)
393389"""
394390function gissinger (u0 = [3 , 0.5 , 1.5 ]; μ = 0.119 , ν = 0.1 , Γ = 0.9 )
395- return CoupledODEs (gissinger_rule, u0, [μ, ν, Γ], gissinger_jacob )
391+ return CoupledODEs (gissinger_rule, u0, [μ, ν, Γ])
396392end
397393function gissinger_rule (u, p, t)
398394 μ, ν, Γ = p
@@ -402,10 +398,8 @@ function gissinger_rule(u, p, t)
402398 return SVector {3} (du1, du2, du3)
403399end
404400function gissinger_jacob (u, p, t)
405- μ, ν, Γ = p
406- return @SMatrix [μ - u[3 ] - u[2 ];
407- u[3 ] - ν u[1 ];
408- u[2 ] u[1 ] - 1 ]
401+ μ, ν, Γ = p
402+ return SMatrix {3,3} (μ,u[3 ],u[2 ],- u[3 ],- ν,u[1 ],- u[2 ],u[1 ],- 1 )
409403end
410404
411405"""
@@ -425,7 +419,7 @@ reversal events by means of a double-disk dynamo system.
425419[^Rikitake1958]: T. Rikitake Math. Proc. Camb. Phil. Soc. **54**, pp 89–105, (1958)
426420"""
427421function rikitake (u0 = [1 , 0 , 0.6 ]; μ = 1.0 , α = 1.0 )
428- return CoupledODEs (rikitake_rule, u0, [μ, α], rikitake_jacob )
422+ return CoupledODEs (rikitake_rule, u0, [μ, α])
429423end
430424function rikitake_rule (u, p, t)
431425 μ, α = p
438432function rikitake_jacob (u, p, t)
439433 μ, α = p
440434 x,y,z = u
441- xdot = - μ* x + y* z
442- ydot = - μ* y + x* (z - α)
443- zdot = 1 - x* y
444- return @SMatrix [- μ z y;
445- z- α - μ x;
446- - y - x 0 ]
435+
436+ return SMatrix {3,3} (- μ,z- α,- y,z,- μ,- x,y,x,0 )
447437end
448438
449439"""
@@ -472,7 +462,7 @@ See Chapter 4 of "Elegant Chaos" by J. C. Sprott. [^Sprott2010]
472462 Sprott, J. C. (2010). *Elegant chaos: algebraically simple chaotic flows*.
473463 World Scientific.
474464"""
475- nosehoover (u0 = [0 , 0.1 , 0 ]) = CoupledODEs (nosehoover_rule, u0, nothing , nosehoover_jacob )
465+ nosehoover (u0 = [0 , 0.1 , 0 ]) = CoupledODEs (nosehoover_rule, u0, nothing )
476466function nosehoover_rule (u, p, t)
477467 x,y,z = u
478468 xdot = y
@@ -482,9 +472,8 @@ function nosehoover_rule(u, p, t)
482472end
483473function nosehoover_jacob (u, p, t)
484474 x,y,z = u
485- return @SMatrix [0 1 0 ;
486- - 1 z y;
487- 0 - 2 y 0 ]
475+
476+ return SMatrix {3,3} (0 ,- 1 ,0 ,1 ,z,- 2 y,0 ,y,0 )
488477end
489478
490479"""
@@ -521,7 +510,7 @@ diameter is 1.
521510"""
522511function antidots (u0 = [0.5 , 0.5 , 0.25 , 0.25 ];
523512 d0 = 0.5 , c = 0.2 , B = 1.0 )
524- return CoupledODEs (antidot_rule, u0, [B, d0, c], antidot_jacob )
513+ return CoupledODEs (antidot_rule, u0, [B, d0, c])
525514end
526515
527516function antidot_rule (u, p, t)
@@ -612,7 +601,7 @@ J. C. Sprott. [^Sprott2010]
612601 World Scientific.
613602"""
614603function ueda (u0 = [3.0 , 0 ]; k = 0.1 , B = 12.0 )
615- return CoupledODEs (ueda_rule, u0, [k, B], ueda_jacob )
604+ return CoupledODEs (ueda_rule, u0, [k, B])
616605end
617606function ueda_rule (u, p, t)
618607 x,y = u
624613function ueda_jacob (u, p, t)
625614 x,y = u
626615 k, B = p
627- return @SMatrix [0 1 ;
628- - 3 * x^ 2 - k]
616+ return SMatrix {2,2} (0 ,- 3 * x^ 2 ,1 ,- k)
629617end
630618
631619
@@ -777,8 +765,7 @@ between the boxes (polar and equatorial ocean basins) and ``\\eta_i`` are parame
777765 Stommel, Thermohaline convection with two stable regimes of flow. Tellus, 13(2)
778766"""
779767function stommel_thermohaline (u = [0.3 , 0.2 ]; η1 = 3.0 , η2 = 1 , η3 = 0.3 )
780- ds = CoupledODEs (stommel_thermohaline_rule, u, [η1, η2, η3],
781- stommel_thermohaline_jacob)
768+ ds = CoupledODEs (stommel_thermohaline_rule, u, [η1, η2, η3])
782769end
783770function stommel_thermohaline_rule (x, p, t)
784771 T, S = x
@@ -791,11 +778,9 @@ function stommel_thermohaline_jacob(x, p, t)
791778 η1, η2, η3 = p
792779 q = abs (T- S)
793780 if T ≥ S
794- return @SMatrix [(- 1 - 2 T + S) (T);
795- (- S) (- η3 - T + 2 S)]
781+ return SMatrix {2,2} ((- 1 - 2 T + S), - S,T,(- η3 - T + 2 S))
796782 else
797- return @SMatrix [(- 1 + 2 T - S) (- T);
798- (+ S) (- η3 + T - 2 S)]
783+ return SMatrix {2,2} ((- 1 + 2 T - S), S,- T,(- η3 + T - 2 S))
799784 end
800785end
801786
838823end
839824function lorenz84_rule_jacob (u, p, t)
840825 F, G, a, b = p
841- x, y, z = u
842- return @SMatrix [(- a) (- 2 y) (- 2 z);
843- y- b* z x- 1 (- b* x);
844- b* y+ z b* x x- 1 ]
826+ x, y, z = u
827+ return SMatrix {3,3} (- a,y- b* z,b* y+ z,- 2 y,x- 1 ,b* x,- 2 z,- b* x,x- 1 )
845828end
846829
847830
@@ -873,8 +856,7 @@ bsn, att = basins_of_attraction((xg, yg), pmap)
873856 Int. Jour. Bifurcation and Chaos 24, 1450009 (2014)
874857"""
875858function lorenzdl (u = [0.1 , 0.1 , 0.1 ]; R= 4.7 )
876- return CoupledODEs (lorenzdl_rule, u, R,
877- lorenzdl_rule_jacob)
859+ return CoupledODEs (lorenzdl_rule, u, R)
878860end
879861@inline @inbounds function lorenzdl_rule (u, p, t)
880862 R = p
885867 return SVector {3} (dx, dy, dz)
886868end
887869function lorenzdl_rule_jacob (u, p, t)
888- x, y, z = u
889- return @SMatrix [- 1 1 0 ;
890- - z 0 - x;
891- y x 0 ]
870+ x, y, z = u
871+ return SMatrix {3,3} (- 1 ,- z,y,1 ,0 ,x,0 ,- x,0 )
892872end
893873
894874"""
@@ -983,8 +963,7 @@ In the original paper there were no parameters, which are added here for explora
983963"""
984964function sprott_dissipative_conservative (u0 = [1.0 , 0 , 0 ]; a = 2 , b = 1 , c = 1 )
985965 return CoupledODEs (
986- sprott_dissipative_conservative_f, u0, [a, b, c], sprott_dissipative_conservative_J
987- )
966+ sprott_dissipative_conservative_f, u0, [a, b, c])
988967end
989968
990969function sprott_dissipative_conservative_f (u, p, t)
@@ -995,12 +974,11 @@ function sprott_dissipative_conservative_f(u, p, t)
995974 dz = c* x - x^ 2 - y^ 2
996975 return SVector (dx, dy, dz)
997976end
998- function sprott_dissipative_conservative_J (u, p, t)
977+ function sprott_dissipative_conservative_jacob (u, p, t)
999978 a, b, c = p
1000979 x, y, z = u
1001- return @SMatrix [a* y + z 1 + a* x + x;
1002- - 4 x b* z b* y;
1003- (c - 2 x) (- 2 y) 0 ]
980+
981+ return SMatrix {3,3} (a* y + z,- 4 x,c - 2 x,1 + a* x,b* z,- 2 y,x,b* y,0 )
1004982end
1005983
1006984"""
@@ -1105,7 +1083,7 @@ oscillations. Setting ``\\mu=8.53`` generates chaotic oscillations.
11051083 The London, Edinburgh and Dublin Phil. Mag. & J. of Sci., 2(7), 978–992.
11061084"""
11071085function vanderpol (u0= [0.5 , 0.0 ]; μ= 1.5 , F= 1.2 , T= 10 )
1108- return CoupledODEs (vanderpol_rule, u0, [μ, F, T], vanderpol_jac )
1086+ return CoupledODEs (vanderpol_rule, u0, [μ, F, T])
11091087end
11101088function vanderpol_rule (u, p, t)
11111089 @inbounds begin
@@ -1115,11 +1093,11 @@ function vanderpol_rule(u, p, t)
11151093 return SVector {2} (du1, du2)
11161094 end
11171095end
1118- function vanderpol_jac (u, p, t)
1096+ function vanderpol_jacob (u, p, t)
11191097 @inbounds begin
11201098 μ = p[1 ]
1121- J = @ SMatrix [0 1 ;
1122- (- μ* (2 * u[1 ]- 1 )* u[2 ]- 1 ) (μ* (1 - u[1 ]^ 2 ))]
1099+ J = SMatrix {2,2} ( [0 1 ;
1100+ (- μ* (2 * u[1 ]- 1 )* u[2 ]- 1 ) (μ* (1 - u[1 ]^ 2 ))])
11231101 return J
11241102 end
11251103end
@@ -1153,7 +1131,7 @@ oscillations.
11531131 https://mathworld.wolfram.com/Lotka-VolterraEquations.html
11541132"""
11551133function lotkavolterra (u0= [10.0 , 5.0 ]; α = 1.5 , β = 1 , δ= 1 , γ= 3 )
1156- return CoupledODEs (lotkavolterra_rule, u0, [α, β, δ, γ], lotkavolterra_jac )
1134+ return CoupledODEs (lotkavolterra_rule, u0, [α, β, δ, γ])
11571135end
11581136function lotkavolterra_rule (u, p, t)
11591137 @inbounds begin
@@ -1163,12 +1141,10 @@ function lotkavolterra_rule(u, p, t)
11631141 return SVector {2} (du1, du2)
11641142 end
11651143end
1166- function lotkavolterra_jac (u, p, t)
1144+ function lotkavolterra_jacob (u, p, t)
11671145 @inbounds begin
11681146 α, β, δ, γ = p
1169- J = @SMatrix [(α - β* u[2 ]) (- β* u[1 ]);
1170- (δ* u[2 ]) (δ* u[1 ] - γ)]
1171- return J
1147+ return SMatrix {2,2} (α - β* u[2 ], δ* u[2 ],- β* u[1 ],δ* u[1 ] - γ)
11721148 end
11731149end
11741150
@@ -1199,7 +1175,7 @@ periodic bursting.
11991175 Proc. R. Soc. Lond. B 221, 87-102.
12001176"""
12011177function hindmarshrose (u0= [- 1.0 , 0.0 , 0.0 ]; a= 1 , b= 3 , c= 1 , d= 5 , r= 0.001 , s= 4 , xr= - 8 / 5 , I= 2.0 )
1202- return CoupledODEs (hindmarshrose_rule, u0, [a,b,c,d,r,s,xr, I], hindmarshrose_jac )
1178+ return CoupledODEs (hindmarshrose_rule, u0, [a,b,c,d,r,s,xr, I])
12031179end
12041180function hindmarshrose_rule (u, p, t)
12051181 @inbounds begin
@@ -1210,13 +1186,10 @@ function hindmarshrose_rule(u, p, t)
12101186 return SVector {3} (du1, du2, du3)
12111187 end
12121188end
1213- function hindmarshrose_jac (u, p, t)
1189+ function hindmarshrose_jacob (u, p, t)
12141190 @inbounds begin
1215- a,b,c,d,r,s, xr, I = p
1216- J = @SMatrix [(- 3 * a* u[1 ]^ 2 + 2 * b* u[1 ]) 1 - 1 ;
1217- - 2 * d* u[1 ] - 1 0 ;
1218- r* s 0 - r]
1219- return J
1191+ a,b,c,d,r,s, xr, I = p
1192+ return SMatrix {3,3} (- 3 * a* u[1 ]^ 2 + 2 * b* u[1 ],- 2 * d* u[1 ],r* s,1 ,- 1 ,0 ,- 1 ,0 ,- r)
12201193 end
12211194end
12221195
@@ -1302,7 +1275,7 @@ radius `\\sqrt(\\mu)`.
13021275 Boulder, CO :Westview Press, a member of the Perseus Books Group (2015).
13031276"""
13041277function stuartlandau_oscillator (u0= [1.0 , 0.0 ]; μ= 1.0 , ω= 1.0 , b= 1 )
1305- return CoupledODEs (stuartlandau_rule, u0, [μ, ω, b], stuartlandau_jac )
1278+ return CoupledODEs (stuartlandau_rule, u0, [μ, ω, b])
13061279end
13071280function stuartlandau_rule (u, p, t)
13081281 @inbounds begin
@@ -1312,12 +1285,12 @@ function stuartlandau_rule(u, p, t)
13121285 return SVector {2} (du1, du2)
13131286 end
13141287end
1315- function stuartlandau_jac (u, p, t)
1288+ function stuartlandau_jacob (u, p, t)
13161289 @inbounds begin
13171290 μ, ω, b = p
1318- J = @SMatrix [(μ - 3 * u[ 1 ] ^ 2 - u[ 2 ] ^ 2 - 2 * b * u[ 1 ] * u[ 2 ]) ( - 2 * u[ 1 ] * u[ 2 ] - ω - b * u[ 1 ] ^ 2 - 3 * b * u[ 2 ] ^ 2 );
1319- ( - 2 * u[1 ]* u[ 2 ] + ω + b * u[2 ]^ 2 + 3 * b* u[1 ]^ 2 ) (μ - u[1 ]^ 2 - 3 * u[2 ]^ 2 + 2 * b* u[1 ]* u[ 2 ])]
1320- return J
1291+
1292+ return SMatrix {2,2} (μ - 3 * u[1 ]^ 2 - u[2 ]^ 2 - 2 * b* u[1 ]* u[ 2 ], - 2 * u[1 ]* u[ 2 ] + ω + b * u[2 ]^ 2 + 3 * b* u[1 ]^ 2 ,
1293+ - 2 * u[ 1 ] * u[ 2 ] - ω - b * u[ 1 ] ^ 2 - 3 * b * u[ 2 ] ^ 2 ,μ - u[ 1 ] ^ 2 - 3 * u[ 2 ] ^ 2 + 2 * b * u[ 1 ] * u[ 2 ])
13211294 end
13221295end
13231296
@@ -2158,4 +2131,4 @@ end
21582131 du3 = x* y - b* z
21592132 du4 = - d* x - d* y
21602133 return SVector {4} (du1, du2, du3, du4)
2161- end
2134+ end
0 commit comments