%
% Filename: example5.m
%
% Description: M-file for simulating pendulum using difference
% equation obtained from nonlinear model.
%
clear; % clear memory
theta_init = 0.1; % initial position
theta_dot_init = 0.2; % initial velocity
T = [0.01 0.05 0.25]; % vector of sample intervals to be used
for n=1:3, % run simulation three times for
% different sample intervals
tfinal = 15; % simulation time
N = tfinal/T(n); % number of samples to simulate over
theta_prev1 = T(n)*theta_dot_init + theta_init; % IC theta[1] for recursion
theta_prev2 = theta_init; % IC theta[0] for recursion
kvec(1) = 0; kvec(2) = 1; % load ICs into vectors for plotting
thetavec(1) = theta_prev2; % since loop starts at k = 2
thetavec(2) = theta_prev1;
for k = 2:N, % enter recursion loop
if((k >= (2+2/T(n))) & (k < (2+7/T(n)))), % define input torque
torque_prev2 = 5;
else
torque_prev2 = 0;
end
% difference equation being solved
theta = (2-T(n))*theta_prev1 + (T(n)-1)*theta_prev2 + ...
10*T(n)*T(n)*sin(theta_prev2) + T(n)*T(n)*torque_prev2;
theta_prev2 = theta_prev1; % store previous values for next
theta_prev1 = theta; % iteration
kvec(k+1) = k;
thetavec(k+1) = theta;
end;
figure(n); clf; % plot resulting response
plot(kvec*T(n),thetavec,'o'); grid;
xlabel('t = kT (sec)'); ylabel('\theta[k] (rad)');
ttlevec=['Pendulum Simulation with T = ', num2str(T(n))];
title(ttlevec);
kvec = 0; thetavec = 0; % reset/clear vectors
end;
MATLAB Plots Generated: