fdpend.m
function pos = fdpend(interval, ic, n)
h = (interval(2) - interval(1))/n;
y(1,:) = ic;
t(1) = interval(1);
direction = [0];
global pos
for k = 1:n
t(k + 1) = t(k) + h;
y(k + 1, :) = trapstep( t(k), y(k,:), h);
if y(k+1,2)*y(k,2) < 0
direction = [direction, y(k+1,1)];
end
end
direction = direction(end:-1:1);
pos = [direction(1), direction(2), direction(3), direction(4)];
function y = trapstep(t,x,h)
% one step of the Trapezoid Method
z1 = ydot(t, x);
g = x + h*z1;
z2 = ydot(t + h, g);
y = x + h*(z1 + z2)/2;
function z = ydot(t,y)
d = 1;
A = 12;
g = 9.81; length = 1;
z(1) = y(2);
z(2) = -(g/length)*sin( y(1) ) - d*y(2) + A*sin(t);
fdp12.m
marker = [];
storage = [];
for k = 1:24
marker = [marker; k];
data_vec_a = fdpend([0, 240], [k*pi/12, 0], 48000);
for k=1:4
if data_vec_a(1, k) > 2*pi
while data_vec_a(1, k) > 2*pi
data_vec_a(1, k) = data_vec_a(1, k) - 2*pi;
end
elseif data_vec_a(1, k) < 0
while data_vec_a(1, k) < 0
data_vec_a(1, k) = data_vec_a(1, k) + 2*pi;
end
end
end
storage = [storage; data_vec_a ];
end
res = [marker storage]
fdpab.m
marker = [];
storage = [];
for n = 1:24
marker = [marker; n; n];
data_vec_a = fdpend([0, 120], [n*pi/12 - 0.05, 0], 24000);
data_vec_b = fdpend([0, 120], [n*pi/12 + 0.05, 0], 24000);
for k=1:4
if data_vec_a(1, k) > 2*pi
while data_vec_a(1, k) > 2*pi
data_vec_a(1, k) = data_vec_a(1, k) - 2*pi;
end
elseif data_vec_a(1, k) < 0
while data_vec_a(1, k) < 0
data_vec_a(1, k) = data_vec_a(1, k) + 2*pi;
end
end
end
for k=1:4
if data_vec_b(1, k) > 2*pi
while data_vec_b(1, k) > 2*pi
data_vec_b(1, k) = data_vec_b(1, k) - 2*pi;
end
elseif data_vec_b(1, k) < 0
while data_vec_b(1, k) < 0
data_vec_b(1, k) = data_vec_b(1, k) + 2*pi;
end
end
end
storage = [storage; data_vec_a; data_vec_b];
end
results = [marker storage]