Week 3 - Solving second order ODEs
SIMPLE PENDULUM
AIM:
To create an animation of simple pendulum by using second order differential equation by using ode solver function.
For simulation the second order equation of the simple pendulum is:
To create a plot between angular velocity and displacement of simple pendulum by using ode45.
CONCEPT:
For a simple pendulum with a damping factor, the equation of simple pendulum is
Where
b = damping coefficient (N-m/s)
m = mass of the bob (kg)
g = gravitational acceleration (m/s)
l = length of the string to connect bob (m)
The above equation is having a differential power of order 2. To use ode45 solver which is developed on the basis of RK method which uses the simple differential equation to solve the higher order differential equations.
OBJECTIVE:
By using ode45 solver which is an inbuilt solver in the MATLAB. The ode45 solver should require simple differential equation to solve any kind of higher order differential equation.
By taking constants we can solve the higher order differential equation to a simple ordinary differential equation.
Let us consider
θ = θ1 ------ (1)
dθ/dt = dθ1/dt = θ2 ------(2)
d2θ/dt2 = dθ2/dt -------(3)
By using these constants, the second order equation will become as:
dθ2/dt = -(b/m) * θ2 – (g/l) * sinθ
The simple differential equations are written in the form of a matrix
By using the above equation and the ode45 solver we can animate the simple pendulum in the MATLAB by writing a code.
program for the simple pendulum:
- Solving second order ODEs USING MATLAB CODE
%program for simple pendulum using ode45.
clear all
close all
clc
%input variables for the secound order ode of a simple pendulum
b = 0.05;
g = 9.81;
l = 1;
m = 0.1;
theta_0 = [0; 3];
t_span = linspace(0,20,500);
%ode 45 function to solve second order ode.
[t,results] = ode45(@(t,theta) ode_func(t,theta,b,g,l,m),t_span, theta_0 );
%plotting of angular velocity and displacement
figure(1)
plot(t,results(:,1))
hold on
plot(t,results(:,2))
grid on
title('motion of pendulum')
xlabel('time in sec')
ylabel('angular velocity(rad/s)/displacement(rad)')
legend('displacement','angular velocity')
angle = results(:,1);
%count command for iterations.
ct = 1;
for i = 1 : length(angle)
omega = angle(i);
figure(2)
title('motion of pendulum')
%fixed corordinates of one end of simple pendulum.
x0 = 0;
y0 = 0;
%moving coordinates of the bob.
x1 = l*cos((3*pi/2)+omega);
y1 = l*sin((3*pi/2)+omega);
%plotting of the bob motion.
plot([x0 x1],[y0 y1],'linewidth',3,'color','g');
hold on;
plot(x1,y1,'o','markers',15,'MarkerFaceColor','k');
hold on;
plot([-3 3],[0 0],'linewidth',2,'color','b');
hold off
axis([-3 3 -2 2])
grid on
pause(0.1)
M(ct) = getframe(gcf);
ct = ct+1;
end
%to create a animation of the simple pendulum
movie(M)
videofile = VideoWriter('simple_pendulum.avi','uncompressed AVI');
open(videofile)
writeVideo(videofile,M)
close(videofile)
ode function program:
function [dtheta_dt] = ode_func(t,theta,b,g,l,m)
theta1 = theta(1);
theta2 = theta(2);
dtheta1_dt = theta(2);
dtheta2_dt = -(b/m)*theta2 - (g/l)*sin(theta1);
dtheta_dt = [dtheta1_dt; dtheta2_dt];
end


CONCLUSION:
We have animated the simple pendulum using the ode45 solver where the second order is reduced to a simple differential equation where it is easy to solve the given equation.
The animation is made using the different points of the bob and the motion of the simple pendulum is created.