Skip to content

Commit ce274f5

Browse files
Rewrited double pendulum_rule (#14)
1 parent 628d46a commit ce274f5

File tree

1 file changed

+11
-17
lines changed

1 file changed

+11
-17
lines changed

src/continuous_famous_systems.jl

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -184,25 +184,19 @@ function double_pendulum(u0=[π/2, 0, 0, 0.5];
184184
return CoupledODEs(doublependulum_rule, u0, [G, L1, L2, M1, M2])
185185
end
186186
@inbounds function doublependulum_rule(u, p, t)
187-
G, L1, L2, M1, M2 = p
188-
189-
du1 = u[2]
190-
191187
φ = u[3] - u[1]
192-
Δ = (M1 + M2) - M2*cos(φ)*cos(φ)
193-
194-
du2 = (M2*L1*u[2]*u[2]*sin(φ)*cos(φ) +
195-
M2*G*sin(u[3])*cos(φ) +
196-
M2*L2*u[4]*u[4]*sin(φ) -
197-
(M1 + M2)*G*sin(u[1]))/(L1*Δ)
198-
188+
sin_ϕ = sin(φ); cos_ϕ = cos(φ)
189+
sin_θ₂ = sin(u[3]); sin_θ₁ = sin(u[1])
190+
Δ = (p[4] + p[5]) - p[5] * cos_ϕ^2
191+
192+
du1 = u[2]
193+
du2 = (p[5] * (cos_ϕ * (p[2] * u[2]^2 * sin_ϕ + p[1] * sin_θ₂) +
194+
p[3] * u[4]^2 * sin_ϕ) -
195+
(p[4] + p[5]) * p[1] * sin_θ₁) / (p[2] * Δ)
199196
du3 = u[4]
200-
201-
du4 = (-M2*L2*u[4]*u[4]*sin(φ)*cos(φ) +
202-
(M1 + M2)*G*sin(u[1])*cos(φ) -
203-
(M1 + M2)*L1*u[2]*u[2]*sin(φ) -
204-
(M1 + M2)*G*sin(u[3]))/(L2*Δ)
205-
197+
du4 = (-p[5] * p[3] * u[4]^2 * sin_ϕ * cos_ϕ +
198+
(p[4] + p[5]) * (p[1] * (sin_θ₁ * cos_ϕ - sin_θ₂) -
199+
p[2] * u[2]^2 * sin_ϕ)) / (p[3] * Δ)
206200
return SVector{4}(du1, du2, du3, du4)
207201
end
208202

0 commit comments

Comments
 (0)