Skip to content

Commit 3a620a0

Browse files
committed
fixed pull req comments
1 parent 9bc19a1 commit 3a620a0

File tree

4 files changed

+30
-19
lines changed

4 files changed

+30
-19
lines changed

src/+otp/+arenstorf/+presets/Canonical.m

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
1-
classdef Canonical < otp.arenstorf.ArenstorfProblem
1+
classdef Canonical < otp.arenstorf.Arenstorf
22
methods
3-
function obj = Canonical
4-
params.m1 = 0.012277471;
5-
params.m2 = 1-0.012277471;
6-
3+
function obj = Canonical(varargin)
4+
5+
p = inputParser;
6+
addParameter(p, 'm1', 0.012277471, @isscalar);
7+
parse(p, varargin{:});
8+
s = p.Results;
9+
10+
params.m1 = s.m1;
11+
params.m2 = 1-params.m1;
12+
713
y0 = [0.994; 0; 0; -2.00158510637908252240537862224];
8-
tspan = [0,20];
14+
tspan = [0,17.0652165601579625588917206249];
915

10-
obj = obj@otp.arenstorf.ArenstorfProblem(tspan, y0, params);
16+
obj = obj@otp.arenstorf.Arenstorf(tspan, y0, params);
1117
end
1218

1319
end
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
classdef ArenstorfProblem < otp.Problem
1+
classdef Arenstorf < otp.Problem
22
% The classic 3-body problem with parameters from
33
% Reference: Hairer, Ernst, Syvert Paul Nørsett, and Gerhard Wanner.
44
% Solving Ordinary Differential Equations I: Nonstiff Problems Springer-Verlag, 1987.
55
% CH II, p. 129.
66
methods
7-
function obj = ArenstorfProblem(timeSpan, y0, parameters)
7+
function obj = Arenstorf(timeSpan, y0, parameters)
88
obj@otp.Problem('Arenstorf Orbit Problem', 4, timeSpan, y0, parameters);
99
end
1010
end
@@ -13,7 +13,7 @@
1313

1414
function onSettingsChanged(obj)
1515
m1 = obj.Parameters.m1;
16-
m2 = obj.Parameters.m2;
16+
m2 = 1- obj.Parameters.m1;
1717

1818
obj.Rhs = otp.Rhs( @(t, y) otp.arenstorf.f(t, y, m1, m2), ...
1919
otp.Rhs.FieldNames.Jacobian, @(t, y) otp.arenstorf.jac(t, y, m1, m2));
@@ -24,8 +24,8 @@ function validateNewState(obj, newTimeSpan, newY0, newParameters)
2424
validateNewState@otp.Problem(obj, newTimeSpan, newY0, newParameters);
2525

2626
otp.utils.StructParser(newParameters) ...
27-
.checkField('m1', 'scalar', 'real', 'finite', 'positive') ...
28-
.checkField('m2', 'scalar', 'real', 'finite', 'positive');
27+
.checkField('m1', 'scalar', 'real', 'finite', 'positive', @(x) x<1) ...
28+
.checkField('m2', 'scalar', 'real', 'finite', 'positive', @(x) x<1);
2929
end
3030

3131
function mov = internalMovie(obj, t, y, varargin)

src/+otp/+arenstorf/jac.m

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
function dfy = jac(~, y, m1 ,m2)
22

3-
dfy =[
4-
0, 0, 1, 0;
5-
0, 0, 0, 1;
6-
(3*m1*(2*m2 - 2*y(1))*(m2 - y(1)))/(2*((m2 - y(1))^2 + y(2)^2)^(5/2)) - m1/((m2 - y(1))^2 + y(2)^2)^(3/2) - m2/((m1 + y(1))^2 + y(2)^2)^(3/2) + (3*m2*(2*m1 + 2*y(1))*(m1 + y(1)))/(2*((m1 + y(1))^2 + y(2)^2)^(5/2)) + 1, (3*m2*y(2)*(m1 + y(1)))/((m1 + y(1))^2 + y(2)^2)^(5/2) - (3*m1*y(2)*(m2 - y(1)))/((m2 - y(1))^2 + y(2)^2)^(5/2), 0, 2;
7-
(3*m2*y(2)*(m1 + y(1)))/((m1 + y(1))^2 + y(2)^2)^(5/2) - (3*m1*y(2)*(2*m2 - 2*y(1)))/(2*((m2 - y(1))^2 + y(2)^2)^(5/2)), (3*m1*y(2)^2)/((m2 - y(1))^2 + y(2)^2)^(5/2) - m1/((m2 - y(1))^2 + y(2)^2)^(3/2) - m2/((m1 + y(1))^2 + y(2)^2)^(3/2) + (3*m2*y(2)^2)/((m1 + y(1))^2 + y(2)^2)^(5/2) + 1, -2, 0];
3+
D1 = m1/((m2 - y(1))^2 + y(2)^2)^(3/2);
4+
D2 = m2/((m1 + y(1))^2 + y(2)^2)^(3/2);
5+
L1 = (2*((m2 - y(1))^2 + y(2)^2)^(5/2));
6+
L2 = ((m1 + y(1))^2 + y(2)^2)^(5/2);
7+
8+
9+
dfy =[ 0, 0, 1, 0;
10+
0, 0, 0, 1;
11+
(3*m1*(2*m2 - 2*y(1))*(m2 - y(1)))/L1 - D1 - D2 + (3*m2*(2*m1 + 2*y(1))*(m1 + y(1)))/(2*L2) + 1, (3*m2*y(2)*(m1 + y(1)))/L2 - (3*m1*y(2)*(m2 - y(1)))/((m2 - y(1))^2 + y(2)^2)^(5/2), 0, 2;
12+
(3*m2*y(2)*(m1 + y(1)))/L2 - (3*m1*y(2)*(2*m2 - 2*y(1)))/L1, (3*m1*y(2)^2)/((m2 - y(1))^2 + y(2)^2)^(5/2) - D1 - D2 + (3*m2*y(2)^2)/L2 + 1, -2, 0];
813

914
end

src/+otp/Problem.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,8 @@ function validateNewState(obj, newTimeSpan, newY0, newParameters)
242242
end
243243

244244
function mov = internalMovie(obj, t, y, varargin)
245-
mov = otp.utils.movie.PhasePlaneMovie(obj.Name, @obj.index2label, varargin{:});
246-
mov.record(t, y(1:2,:));
245+
mov = otp.utils.movie.TrajectoryMovie(obj.Name, @obj.index2label, varargin{:});
246+
mov.record(t, y);
247247
end
248248

249249
function label = internalIndex2label(~, index)

0 commit comments

Comments
 (0)