@@ -2,14 +2,15 @@ using ModelingToolkit
2
2
using DiffEqBase, StaticArrays
3
3
4
4
@variables t y (t)[1 : 10 ]
5
+ y = collect (y)
5
6
D = Differential (t)
6
7
7
8
sa1sys = let
8
9
sa1eqs = [D (y[1 ]) ~ - 0.5 * y[1 ], D (y[2 ]) ~ - y[2 ], D (y[3 ]) ~ - 100 * y[3 ], D (y[4 ]) ~ - 90 * y[4 ]]
9
10
ODESystem (sa1eqs, t, name = :sa1 )
10
11
end
11
12
12
- sa1prob = ODEProblem {false} (sa1sys, collect ( y[1 : 4 ]) .=> 1.0 , (0 , 20.0 ), dt = 1e-2 )
13
+ sa1prob = ODEProblem {false} (sa1sys, y[1 : 4 ] .=> 1.0 , (0 , 20.0 ), dt = 1e-2 )
13
14
14
15
sa2sys = let
15
16
sa2eqs = [D (y[1 ]) ~ - 1800 * y[1 ] + 900 * y[2 ]]
@@ -20,7 +21,7 @@ sa2sys = let
20
21
ODESystem (sa2eqs, t, name = :sa2 )
21
22
end
22
23
23
- sa2prob = ODEProblem {false} (sa2sys, collect ( y[1 : 9 ]) .=> 0.0 , (0 , 120.0 ), dt = 5e-4 )
24
+ sa2prob = ODEProblem {false} (sa2sys, y[1 : 9 ] .=> 0.0 , (0 , 120.0 ), dt = 5e-4 )
24
25
25
26
sa3sys = let
26
27
sa3eqs = [
@@ -32,11 +33,132 @@ sa3sys = let
32
33
ODESystem (sa3eqs, t, name = :sa3 )
33
34
end
34
35
35
- sa3prob = ODEProblem {false} (sa3sys, collect ( y[1 : 4 ]) .=> 1.0 , (0 , 20.0 ), dt = 1e-5 )
36
+ sa3prob = ODEProblem {false} (sa3sys, y[1 : 4 ] .=> 1.0 , (0 , 20.0 ), dt = 1e-5 )
36
37
37
38
sa4sys = let
38
- sa3eqs = [D (y[i]) ~ - i^ 5 * y[i] for i in 1 : 10 ]
39
- ODESystem (sa3eqs, t, name = :sa3 )
39
+ sa4eqs = [D (y[i]) ~ - i^ 5 * y[i] for i in 1 : 10 ]
40
+ ODESystem (sa4eqs, t, name = :sa4 )
41
+ end
42
+
43
+ sa4prob = ODEProblem {false} (sa4sys, y[1 : 10 ] .=> 1.0 , (0 , 1.0 ), dt = 1e-5 )
44
+
45
+ # const SA_PROBLEMS = [sa1prob, sa2prob, sa3prob, sa4prob]
46
+
47
+ sb1sys = let
48
+ sb1eqs = [D (y[1 ]) ~ - y[1 ] + y[2 ],
49
+ D (y[2 ]) ~ - 100 y[1 ] - y[2 ],
50
+ D (y[3 ]) ~ - 100 y[3 ] + y[4 ],
51
+ D (y[4 ]) ~ - 10_000 y[3 ] - 100 y[4 ]]
52
+
53
+ ODESystem (sb1eqs, t, name = :sb1 )
54
+ end
55
+
56
+ sb1prob = ODEProblem {false} (sb1sys, [y[[1 , 3 ]] .=> 1.0 ; y[[2 , 4 ]] .=> 0.0 ;], (0 , 20.0 ), dt = 7e-3 )
57
+
58
+
59
+ @parameters α
60
+ sb2sys = let
61
+ sb2eqs = [D (y[1 ]) ~ - 10 y[1 ] + α * y[2 ],
62
+ D (y[2 ]) ~ - α * y[1 ] - 10 * y[2 ],
63
+ D (y[3 ]) ~ - 4 y[3 ],
64
+ D (y[4 ]) ~ - y[4 ],
65
+ D (y[5 ]) ~ - 0.5 y[5 ],
66
+ D (y[6 ]) ~ - 0.1 y[6 ]]
67
+
68
+ ODESystem (sb2eqs, t, name = :sb2 )
69
+ end
70
+
71
+ sb2prob = ODEProblem {false} (sb2sys, y .=> 1.0 , (0 , 20.0 ), [α => 3 ], dt = 1e-2 )
72
+ sb3prob = ODEProblem {false} (sb2sys, y .=> 1.0 , (0 , 20.0 ), [α => 8 ], dt = 1e-2 )
73
+ sb4prob = ODEProblem {false} (sb2sys, y .=> 1.0 , (0 , 20.0 ), [α => 25 ], dt = 1e-2 )
74
+ sb5prob = ODEProblem {false} (sb2sys, y .=> 1.0 , (0 , 20.0 ), [α => 100 ], dt = 1e-2 )
75
+
76
+
77
+ sc1sys = let
78
+ sc1eqs = [
79
+ D (y[1 ]) ~ - y[1 ] + y[2 ]^ 2 + y[3 ]^ 2 + y[4 ]^ 2 ,
80
+ D (y[2 ]) ~ - 10 y[2 ] + 10 * (y[3 ]^ 2 + y[4 ]^ 2 ),
81
+ D (y[3 ]) ~ - 40 y[3 ] + 40 * y[4 ]^ 2 ,
82
+ D (y[4 ]) ~ - 100 y[4 ] + 2 ]
83
+
84
+ ODESystem (sc1eqs, t, name = :sc1 )
85
+ end
86
+
87
+ sc1prob = ODEProblem {false} (sc1sys, y .=> 1.0 , (0 , 20.0 ), dt = 1e-2 )
88
+
89
+
90
+ @parameters β
91
+ sc2sys = let
92
+ sc2eqs = [D (y[1 ]) ~ - y[1 ] + 2 ,
93
+ D (y[2 ]) ~ - 10 y[2 ] + β * y[1 ]^ 2 ,
94
+ D (y[3 ]) ~ - 40 y[3 ] + 4 β * (y[1 ]^ 2 + y[2 ]^ 2 ),
95
+ D (y[4 ]) ~ - 100 y[4 ] + 10 β * (y[1 ]^ 2 + y[2 ]^ 2 + y[3 ]^ 2 )]
96
+
97
+ ODESystem (sc2eqs, t, name = :sc2 )
98
+ end
99
+
100
+ sc2prob = ODEProblem {false} (sc2sys, y .=> 1.0 , (0 , 20.0 ), [β => 0.1 ], dt = 1e-2 , cse = true )
101
+ sc3prob = ODEProblem {false} (sc2sys, y .=> 1.0 , (0 , 20.0 ), [β => 1.0 ], dt = 1e-2 , cse = true )
102
+ sc3prob = ODEProblem {false} (sc2sys, y .=> 1.0 , (0 , 20.0 ), [β => 10.0 ], dt = 1e-2 , cse = true )
103
+ sc3prob = ODEProblem {false} (sc2sys, y .=> 1.0 , (0 , 20.0 ), [β => 20.0 ], dt = 1e-2 , cse = true )
104
+
105
+ sd1sys = let
106
+ sd1eqs = [D (y[1 ]) ~ 0.2 * (y[2 ] - y[1 ]),
107
+ D (y[2 ]) ~ 10 y[1 ] - (60 - 0.125 y[3 ])* y[2 ] + 0.125 y[3 ],
108
+ D (y[3 ]) ~ 1 ]
109
+
110
+ ODESystem (sd1eqs, t, name = :sd1 )
111
+ end
112
+
113
+ sd1prob = ODEProblem {false} (sd1sys, y .=> 0.0 , (0 , 400.0 ), [β => 0.1 ], dt = 1.7e-2 )
114
+
115
+ sd2sys = let
116
+ sd2eqs = [D (y[1 ]) ~ - 0.04 y[1 ] + 0.01 * (y[2 ] * y[3 ]),
117
+ D (y[2 ]) ~ 400 y[1 ] - 100 * (y[2 ] * y[3 ]) - 3000 * y[2 ]^ 2 ,
118
+ D (y[3 ]) ~ 30 y[2 ]^ 2 ]
119
+
120
+ ODESystem (sd2eqs, t, name = :sd2 )
121
+ end
122
+
123
+ sd2prob = ODEProblem {false} (sd2sys, [y[1 ] => 1.0 ; y[2 : 3 ] .=> 0.0 ], (0 , 40.0 ), dt = 1e-5 , cse = true )
124
+
125
+ sd3sys = let
126
+ sd3eqs = [D (y[1 ]) ~ y[3 ] - 100 * (y[1 ] * y[2 ]),
127
+ D (y[2 ]) ~ y[3 ] + 2 y[4 ] - 100 * (y[1 ] * y[2 ]) - 2e4 * y[2 ]^ 2 ,
128
+ D (y[3 ]) ~ - y[3 ] + 100 * (y[1 ] * y[2 ]),
129
+ D (y[4 ]) ~ - y[4 ] + 1e4 * y[2 ]^ 2 ]
130
+
131
+ ODESystem (sd3eqs, t, name = :sd3 )
132
+ end
133
+
134
+ sd3prob = ODEProblem {false} (sd3sys, [y[1 : 2 ] .=> 1 ; y[3 : 4 ] .=> 0.0 ], (0 , 20.0 ), dt = 2.5e-5 , cse = true )
135
+
136
+ sd4sys = let
137
+ sd4eqs = [D (y[1 ]) ~ - 0.013 y[1 ] - 1000 * (y[1 ] * y[3 ]),
138
+ D (y[2 ]) ~ - 2500 * (y[2 ] * y[3 ]),
139
+ D (y[3 ]) ~ - 0.013 y[1 ] - 1000 * (y[1 ] * y[3 ]) - 2500 * (y[2 ] * y[3 ])]
140
+
141
+ ODESystem (sd4eqs, t, name = :sd4 )
142
+ end
143
+
144
+ sd4prob = ODEProblem {false} (sd4sys, [y[1 : 2 ] .=> 1 ; y[3 ] => 0.0 ], (0 , 50.0 ), dt = 2.9e-4 , cse = true )
145
+
146
+ sd5sys = let
147
+ sd5eqs = [D (y[1 ]) ~ 0.01 - (1 + (y[1 ] + 1000 ) * (y[1 ] + 1 )) * (0.01 + y[1 ] + y[2 ]),
148
+ D (y[2 ]) ~ 0.01 - (1 + y[2 ]^ 2 ) * (0.01 + y[1 ] + y[2 ])]
149
+
150
+ ODESystem (sd5eqs, t, name = :sd5 )
151
+ end
152
+
153
+ sd5prob = ODEProblem {false} (sd5sys, y[1 : 2 ] .=> 0.0 , (0 , 100.0 ), dt = 1e-4 , cse = true )
154
+
155
+ sd6sys = let
156
+ sd6eqs = [D (y[1 ]) ~ - y[1 ] + 10 ^ 8 * y[3 ] * (1 - y[1 ]),
157
+ D (y[2 ]) ~ - 10 y[2 ] + 3e7 * y[3 ] * (1 - y[2 ]),
158
+ D (y[3 ]) ~ - (- y[1 ] + 10 ^ 8 * y[3 ] * (1 - y[1 ])) - (- 10 y[2 ] + 3e7 * y[3 ] * (1 - y[2 ])),
159
+ ]
160
+
161
+ ODESystem (sd6eqs, t, name = :sd6 )
40
162
end
41
163
42
- sa4prob = ODEProblem {false} (sa4sys, collect ( y[1 : 10 ]) .=> 1.0 , (0 , 1.0 ), dt = 1e-5 )
164
+ sd6prob = ODEProblem {false} (sd6sys, [ y[1 ] => 1.0 ; y[ 2 : 3 ] .=> 0.0 ] , (0 , 1.0 ), dt = 3.3e-8 , cse = true )
0 commit comments