@@ -76,7 +76,7 @@ function's documentation string.
76
76
77
77
"""
78
78
function 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])
80
80
end
81
81
@inbounds function chua_rule (u, p, t)
82
82
du1 = p[1 ] * (u[2 ] - u[1 ] - chua_element (u[1 ], p[3 ], p[4 ]))
85
85
return SVector {3} (du1, du2, du3)
86
86
end
87
87
function 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 )
91
89
end
92
90
# Helper functions for Chua's circuit.
93
91
function chua_element (x, m0, m1)
@@ -123,7 +121,7 @@ function's documentation string.
123
121
[^Rössler1976]: O. E. Rössler, Phys. Lett. **57A**, pp 397 (1976)
124
122
"""
125
123
function 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])
127
125
end
128
126
@inbounds function roessler_rule (u, p, t)
129
127
du1 = - u[2 ]- u[3 ]
132
130
return SVector {3} (du1, du2, du3)
133
131
end
134
132
function 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 ])
138
134
end
139
135
140
136
"""
@@ -392,7 +388,7 @@ function's documentation string.
392
388
[^Gissinger2012]: C. Gissinger, Eur. Phys. J. B **85**, 4, pp 1-12 (2012)
393
389
"""
394
390
function 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, [μ, ν, Γ])
396
392
end
397
393
function gissinger_rule (u, p, t)
398
394
μ, ν, Γ = p
@@ -402,10 +398,8 @@ function gissinger_rule(u, p, t)
402
398
return SVector {3} (du1, du2, du3)
403
399
end
404
400
function 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 )
409
403
end
410
404
411
405
"""
@@ -425,7 +419,7 @@ reversal events by means of a double-disk dynamo system.
425
419
[^Rikitake1958]: T. Rikitake Math. Proc. Camb. Phil. Soc. **54**, pp 89–105, (1958)
426
420
"""
427
421
function rikitake (u0 = [1 , 0 , 0.6 ]; μ = 1.0 , α = 1.0 )
428
- return CoupledODEs (rikitake_rule, u0, [μ, α], rikitake_jacob )
422
+ return CoupledODEs (rikitake_rule, u0, [μ, α])
429
423
end
430
424
function rikitake_rule (u, p, t)
431
425
μ, α = p
438
432
function rikitake_jacob (u, p, t)
439
433
μ, α = p
440
434
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 )
447
437
end
448
438
449
439
"""
@@ -472,7 +462,7 @@ See Chapter 4 of "Elegant Chaos" by J. C. Sprott. [^Sprott2010]
472
462
Sprott, J. C. (2010). *Elegant chaos: algebraically simple chaotic flows*.
473
463
World Scientific.
474
464
"""
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 )
476
466
function nosehoover_rule (u, p, t)
477
467
x,y,z = u
478
468
xdot = y
@@ -482,9 +472,8 @@ function nosehoover_rule(u, p, t)
482
472
end
483
473
function nosehoover_jacob (u, p, t)
484
474
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 )
488
477
end
489
478
490
479
"""
@@ -521,7 +510,7 @@ diameter is 1.
521
510
"""
522
511
function antidots (u0 = [0.5 , 0.5 , 0.25 , 0.25 ];
523
512
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])
525
514
end
526
515
527
516
function antidot_rule (u, p, t)
@@ -612,7 +601,7 @@ J. C. Sprott. [^Sprott2010]
612
601
World Scientific.
613
602
"""
614
603
function 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])
616
605
end
617
606
function ueda_rule (u, p, t)
618
607
x,y = u
624
613
function ueda_jacob (u, p, t)
625
614
x,y = u
626
615
k, B = p
627
- return @SMatrix [0 1 ;
628
- - 3 * x^ 2 - k]
616
+ return SMatrix {2,2} (0 ,- 3 * x^ 2 ,1 ,- k)
629
617
end
630
618
631
619
@@ -777,8 +765,7 @@ between the boxes (polar and equatorial ocean basins) and ``\\eta_i`` are parame
777
765
Stommel, Thermohaline convection with two stable regimes of flow. Tellus, 13(2)
778
766
"""
779
767
function 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])
782
769
end
783
770
function stommel_thermohaline_rule (x, p, t)
784
771
T, S = x
@@ -791,11 +778,9 @@ function stommel_thermohaline_jacob(x, p, t)
791
778
η1, η2, η3 = p
792
779
q = abs (T- S)
793
780
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))
796
782
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))
799
784
end
800
785
end
801
786
838
823
end
839
824
function lorenz84_rule_jacob (u, p, t)
840
825
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 )
845
828
end
846
829
847
830
@@ -873,8 +856,7 @@ bsn, att = basins_of_attraction((xg, yg), pmap)
873
856
Int. Jour. Bifurcation and Chaos 24, 1450009 (2014)
874
857
"""
875
858
function 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)
878
860
end
879
861
@inline @inbounds function lorenzdl_rule (u, p, t)
880
862
R = p
885
867
return SVector {3} (dx, dy, dz)
886
868
end
887
869
function 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 )
892
872
end
893
873
894
874
"""
@@ -983,8 +963,7 @@ In the original paper there were no parameters, which are added here for explora
983
963
"""
984
964
function sprott_dissipative_conservative (u0 = [1.0 , 0 , 0 ]; a = 2 , b = 1 , c = 1 )
985
965
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])
988
967
end
989
968
990
969
function sprott_dissipative_conservative_f (u, p, t)
@@ -995,12 +974,11 @@ function sprott_dissipative_conservative_f(u, p, t)
995
974
dz = c* x - x^ 2 - y^ 2
996
975
return SVector (dx, dy, dz)
997
976
end
998
- function sprott_dissipative_conservative_J (u, p, t)
977
+ function sprott_dissipative_conservative_jacob (u, p, t)
999
978
a, b, c = p
1000
979
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 )
1004
982
end
1005
983
1006
984
"""
@@ -1105,7 +1083,7 @@ oscillations. Setting ``\\mu=8.53`` generates chaotic oscillations.
1105
1083
The London, Edinburgh and Dublin Phil. Mag. & J. of Sci., 2(7), 978–992.
1106
1084
"""
1107
1085
function 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])
1109
1087
end
1110
1088
function vanderpol_rule (u, p, t)
1111
1089
@inbounds begin
@@ -1115,11 +1093,11 @@ function vanderpol_rule(u, p, t)
1115
1093
return SVector {2} (du1, du2)
1116
1094
end
1117
1095
end
1118
- function vanderpol_jac (u, p, t)
1096
+ function vanderpol_jacob (u, p, t)
1119
1097
@inbounds begin
1120
1098
μ = 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 ))])
1123
1101
return J
1124
1102
end
1125
1103
end
@@ -1153,7 +1131,7 @@ oscillations.
1153
1131
https://mathworld.wolfram.com/Lotka-VolterraEquations.html
1154
1132
"""
1155
1133
function 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, [α, β, δ, γ])
1157
1135
end
1158
1136
function lotkavolterra_rule (u, p, t)
1159
1137
@inbounds begin
@@ -1163,12 +1141,10 @@ function lotkavolterra_rule(u, p, t)
1163
1141
return SVector {2} (du1, du2)
1164
1142
end
1165
1143
end
1166
- function lotkavolterra_jac (u, p, t)
1144
+ function lotkavolterra_jacob (u, p, t)
1167
1145
@inbounds begin
1168
1146
α, β, δ, γ = 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 ] - γ)
1172
1148
end
1173
1149
end
1174
1150
@@ -1199,7 +1175,7 @@ periodic bursting.
1199
1175
Proc. R. Soc. Lond. B 221, 87-102.
1200
1176
"""
1201
1177
function 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])
1203
1179
end
1204
1180
function hindmarshrose_rule (u, p, t)
1205
1181
@inbounds begin
@@ -1210,13 +1186,10 @@ function hindmarshrose_rule(u, p, t)
1210
1186
return SVector {3} (du1, du2, du3)
1211
1187
end
1212
1188
end
1213
- function hindmarshrose_jac (u, p, t)
1189
+ function hindmarshrose_jacob (u, p, t)
1214
1190
@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)
1220
1193
end
1221
1194
end
1222
1195
@@ -1302,7 +1275,7 @@ radius `\\sqrt(\\mu)`.
1302
1275
Boulder, CO :Westview Press, a member of the Perseus Books Group (2015).
1303
1276
"""
1304
1277
function 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])
1306
1279
end
1307
1280
function stuartlandau_rule (u, p, t)
1308
1281
@inbounds begin
@@ -1312,12 +1285,12 @@ function stuartlandau_rule(u, p, t)
1312
1285
return SVector {2} (du1, du2)
1313
1286
end
1314
1287
end
1315
- function stuartlandau_jac (u, p, t)
1288
+ function stuartlandau_jacob (u, p, t)
1316
1289
@inbounds begin
1317
1290
μ, ω, 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 ])
1321
1294
end
1322
1295
end
1323
1296
@@ -2158,4 +2131,4 @@ end
2158
2131
du3 = x* y - b* z
2159
2132
du4 = - d* x - d* y
2160
2133
return SVector {4} (du1, du2, du3, du4)
2161
- end
2134
+ end
0 commit comments