Week 3 - Solving second order ODEs
Aim= write a program to simluate the pendulum motion.
ODE= it is a mathematics,an ordinary differential equation is a differential equation containing one or more functions of
one independent variable and the derivatives of those functions.
d^2(theta)/dt^2+b/m d(theta)/dt+g/l sin(theta)=0
b=damping
m=mass
g=gravity
l=length
clear all
close all
clc
b=0.05;
g=9.81;
l=1;
m=0.1;
%initial condition
theta_0=[0,5];
%time points
t_span=linspace(0,10,500);
%solve ODE
[t,results]=ode45(@(t,theta)odefunc(t,theta,b,g,l,m),t_span,theta_0);
figure (1)
plot(t,results(:,1))
hold on
plot(t,results(:,2))
ct=1;
for i=1:length(t_span)
%coordinates
x=l*sin(results(i,1));
y=l*cos(results(i,1));
figure (2)
%plot fixed link
plot([-2 2],[0 0],'linewidth',5,'color','b')
hold on
plot([0 x],[0 y],'linewidth',5)
plot(x,y,'o','markersize',15,'markerface color','b')
%axis setting
axis([-3 3 -2 2])
M(ct)=getframe (gcf);% to change the frame of the movie
ct=ct+1;
hold off
end
function [dtheta_dt]=odefunc(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