function pendulum()
P.g = 9.81;
P.l = 1.0;
P.c = 1.0;
P.m = 1.0;
th0 = 0.5;
w0 = 0.0;
z0 = [th0;w0];
tSpan = [0,4];
dtMax = 0.01;
nStep = ceil(diff(tSpan)/dtMax);
t = linspace(tSpan(1),tSpan(2),nStep);
z = zeros(2,nStep);
z(:,1) = z0;
for i=2:nStep
dt = t(i)-t(i-1);
zNow = z(:,i-1);
z(:,i) = zNow + dt*dynamics(zNow,P);
end
figure(1); clf;
subplot(2,1,1); plot(t,z(1,:));
xlabel('Time (s)'); ylabel('Angle (rad)');
title('Simple Damped Pendulum');
subplot(2,1,2); plot(t,z(2,:));
xlabel('Time (s)'); ylabel('Rate (rad/s)');
end
function dz = dynamics(z,P)
th = z(1,:); w = z(2,:);
dth = w;
dw = -(P.g/P.l)*sin(th) - (P.c/(P.m*P.l*P.l))*w;
dz = [dth; dw];
end