opspend.m

function y = opspend(interval, ic, n, P)
h = (interval(2) - interval(1))/n;



y(1,:) = ic;
t(1) = interval(1);



for k = 1:n
    t(k + 1) = t(k) + h;
    y(k + 1, :) = trapstep( t(k), y(k,:), h, P);
end

function y = trapstep(t,x,h, P)
% one step of the Trapezoid Method
z1 = ydot(t, x, P);
g = x + h*z1;
z2 = ydot(t + h, g, P);
y = x + h*(z1 + z2)/2;

function z = ydot(t,y, P)
d = 0.1;
A = P; %25
g = 9.81; length = 2.5;
z(1) = y(2);
z(2) = -( (g/length) + A * cos( 2*pi*t ) )*sin(y(1)) - d*y(2);

stable_high.m

format long
a = 24;
b = 26;
x = 0;
for steps = 1:100
    param = (a+b)/2;
    data = opspend([0, 60], [3.1, 0], 12000, param);

    length = size(data, 1);

    for k = 1:length
        if or(data(k, 1) < pi/2, data(k, 1) > 3*pi/2)
           x = 1;
        else
            x = 0;
        end
    end
    if x == 1
        b = (a + b)/2;
    else
        a = (a + b)/2;
    end
        
end
a
b

stable_low.m

format long
a = 17;
b = 19;
x = 0;
for steps = 1:100
    param = (a+b)/2;
    data = opspend([0, 60], [3.1, 0], 12000, param);

    length = size(data, 1);

    for k = 1:length
        if or(data(k, 1) < pi/2, data(k, 1) > 3*pi/2)
           x = 0;
        else
            x = 1;
        end
    end
    if x == 1
        b = (a + b)/2;
    else
        a = (a + b)/2;
    end
        
end
a
b