https://youtu.be/Li8Suvf3C5Y
MATLAB MAIN PROGRAM:
clear all
close all
clc
b = 0.05;
g = 9.81;
l = 1;
m = 0.1;
% initial condition
theta_0=[0;3];
%time points
t_span= linspace(0,20,500)
% solve ode
[t,results] = ode45(@(t,theta)ode_func(t,theta,b,g,l,m),t_span,theta_0)
plot(t,results(:,1))
hold on
plot(t,results(:,2))
xlabel('time');
ylabel('plot');
%for animation
ct=1;
for i=1:length(results(:,1));
x0=0;
y0=0;
x1=l*sin(results(i,1));
y1=-l*cos(results(i,1));
figure(2)
plot([-1,1],[0,0],'linewidth',5,'color','g');
axis([-2 2 -2 2]);
hold on
line([x0,x1],[y0,y1],'linewidth',5,'color','b');
plot(x1,y1,'o','MarkerSize',25,'MarkerFaceColor','r');
hold off
grid on
M (ct) = getframe(gcf);
ct=ct+1;
end
% create movie
movie(M)
videofile = VideoWriter('pendulum_kinematics.avi','uncompressed AVI');
open(videofile);
writeVideo(videofile,M);
close(videofile)
ODE_func:
function[dtheta_dt]=ode_func(t,theta,b,g,l,m)
theta1=theta(1);
theta2=theta(2);
dtheta1_dt=theta2
dtheta2_dt=-(b/m)*theta2-(g/l)*sin(theta1);
dtheta_dt=[dtheta1_dt;dtheta2_dt];
end
EXPLANATION:
* the values of l,m,b,g re assigned.
* time interval(0-20s) is assigned,initial condition (at t=0)are assigned such
as,angular displacement=0 and angular velocity =3rad/sec are also assigned.
* ode function is used to solve ode.
* in function program the displacement and velocity are calculated.
* for loop, position of the pendulum at each is captured angle the initial end x0=0 y0=0
and other end x1=lsin(theta),y1=-lcos(theta) are assigned.the strings are plotted. the
sphere is plotted using marker.finally using getframe(gcf) command the frame.
* using movie command simulation of pendulum is obtained.