Challenge

Week 3 - Solving second order ODEs

% To write a program for a simple Pendulum using ODE
clear all
close all
clc

%input variables for the second order ODE of a simple pendulum
b = 0.05;
g = 9.81;
l = 2;
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, result(:,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 coordinates of one end of simple pendulum.
x0 = 0;
y0 = 0;

%moving coordinate 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 an animation of the simple pendulum
movie(M)
videofile = videowriter('simple_pendulum.avi','uncompressed AVI');
open(videofile)
writevideo(videofile,M)
close(videofile)

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 = [dtheta_dt; dtheta2_dt];

end

Program Explanation:

Clear all, close all, clc are used to clear the work space, to clear the graphs that's exists, and clear the command window.

The Inputs are for the simple pendulum are specified and the b= damping coefficient = 0.05 (n-m/s),

g = acceleration due to gravity = 9.81 (m/s),

1= length of the string = 1(m), m= mass of the bob = 1 (kg).

t_span is a command used in the ode45 solver which specifies the time span of the iterations that are going to solve the ordinary differential equation.

ode45 is a function in MATLAB that solves ordinary or partial differential equations using a numerical method.

In this problem, the highest order is 2. So, we have to take two constant values so that the equation is changed to simple differential equation. The function should take at least 2 inputs to solve the equation to the approximate result. The ode45 function has a syntax in which we need to specify which should be t and y and the output may be of (t. y, args) and a timespan for the function to work and the initial value of the equation. Syntax of an ode45 solver

Figure 1 is going to tell how the damping is done for the pendulum. The angular velocity and displacement will come to rest at end of the function.. plotting the values for the angular velocity and the displacement by using the plot command. The label command is used to label the X & Y-axis.

The legend command is used to label the angular velocity and the displacement. To animate the motion of a simple pendulum, a for loop is used to create the specified set of points to keep the bob at different locations.

x0 and yo be the fixed point at one end of the string and xl and yl be the different position of the bob. At each and every point of the bob the 'ct command which is used to count each and every position and store the data.

At the end of the for loop there will be set of positions for each and every point.

Movie(M) is used to create a film of the stored data of the motion of the pendulum. video writer command specifies the name of the file and the type of data is stored in it.

Open command is used to open the file where the video is going to store.

Writevideo command is used to create the video animation by using M file.

Close command is used to close the video file.

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.