https://youtu.be/dpLyeStToks
clear all
close all
clc
% inputs
b=0.05; %damping co efficient
l=1; %length of pendulum
m=1; % mass of ball
g=9.81; % acceleration due to gravity
%initial condition
theta_0=[0;3] % angular displacement and angular velocity
% time points
t_span=linspace(0,20,500)
%ode solution
[t,result]=ode45(@(t,theta)ode_func(t,theta,b,l,m,g),t_span,theta_0)
plot(t,result(:,1))
hold on
plot(t,result(:,2))
% to animate the plot
ct=1 % to keep track of same number
for i=1:length(result(:,1))
x0=0;
y0=0;
x1= l*sin(result(i,1))
y1=-l*cos(result(i,1))
figure(2)
plot([-1,1],[0,0],'linewidth',20,'color','g')
axis([-3 3 -3 3])
hold on
line([x0 x1],[y0 y1],'linewidth',10,'color','b')
plot(x1,y1,'o','markersize',20,'markerfacecolor','y')
title('simple pendulum')
hold off
M(ct) = getframe(gcf);
ct=ct+1;
end
% creating movie
movie(M)
videofile=VideoWriter('simple_pendulum.avi','uncompressed AVI');
open(videofile)
writeVideo(videofile,M)
close(videofile)
% ode function code
function[dtheta_dt]=ode_func(t,theta,b,l,m,g)
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
animation video link