Week 4.1 - Solving second order ODEs
https://drive.google.com/file/d/1G22IYhr0wRJujKYVYakMXDB_CD0tyZBk/view?usp=sharing



REPORT:
CODING EXPLANATION
Length of the pendulum l = 1 metre
Mass of the ball in kg m = 1 kg
Damping coefficient b = 0.05
Gravity g = 9.81 m/s^2
% Initial conditions (x0)
x0 = [0;3];
where initial time for displacement = 0
initial time for velocity = 3 rad/sec
% Time points (t)
t = linspace(0,20,500) - where 0 and 20 are the limits of time and 500 points are in
between 0 & 20 because its amatrix array
% solve ode
[t x] = ode45('ode_function',t,x0);
t denotes the time and x denotes the current displacement & velocity
ode45 is an inbuilt command used for solving higher odrder rapidly varying odes
here, ode45 solves the ode function. Where 0de_function is a function call of t&x
varying values.
%plotting
subplot(2,1,1) - subplot command used to subplot the combined figure functions
separatly
also 2 represents rows and 1 represents coloumns and last 1 represents the figure
position during plotting.
plot(t,x(:,1)) - means plot the the entire first column data.
hold on used to restrict the the overwriting of commands
ylabel labels the diplacement in y axis
xlabel labels the time in x axis
similarly velocity and time plots in the same exact way.
subplot(2,1,2) - subplot command used to subplot the combined figure functions
separatly
also 2 represents rows and 1 represents coloumns and last 2 represents the figure
position during plotting.
plot(t,x(:,2)) - means plot the the entire second column data.
hold on used to restrict the the overwriting of commands
ylabel labels the velocity in y axis
xlabel labels the time in x axis
% ANIMATION
x0 = 0
y0 = 0 represents the initial points of the pendulum
ct = 1 for representing each & every frame
for loop is used for the repeatition of each values in the array matrix
i = 1:length(t) - where i is the range operator storage & length(t) means the range with
the intervals. (t) means its not an array matrix and it has only one value
x1 = l*sin(x(i,1));
y1 = -1*cos(x(i,1)); - equations for finding the positions of pendulum
where x1&y1 shows reccuring value for the movements of pendulum.
figure(2) shows the animation in 2nd fig
plot([-1 1],[0 0],'linewidth',6,'color','g') - means plot a line of width 6 mm, in
xaxis from -1 to 1 putting no value for y axis in an array matrix, with color green.
axis([-2 2 -2 2]) - helps to change the xlimits & ylimits
line([x0 x1],[y0 y1],'linewidth',2,'color','b')- for creating a line that extends upto
x1 value & same for the y axis with aline width of 2mm with color blue
hold on;
plot(x0,y0,'o','markersize',3,'markerfacecolor','y') - used for marking a mark on the
x0,y0 position with a size of 3 mm of color yellow
plot(x1,y1,'o','markersize',20,'markerfacecolor','r') - used for marking a mark on the
x1,y1 position with a size of 20 mm of color red.
title('Damping of simple Pendulum') - for labeling the title on the animation.
legend('support rod','length of pendulum','fixed point','Body of pendulum') - used this
command for mentioning the respective terms.
grid on - for showing the grid in the animation
hold off
M(ct) = getframe(gcf)- helps to capture the movie of counter IE capture the movie
each frame by frame.
ct = ct+1 - means each time the for loop executes, it may increment the frame.
end is used to end the i loop.
% creating the avi file
movie(M) - helps to play the movie frames in array
videofile=VideoWriter('second_order_ode.avi','Uncompressed AVI') - command helps to
create a video file of specified name & format(AVI).
open(videofile) - opens the video file
writeVideo(videofile,M) - writes the video files captured in M array
close(videofile) - closes the video file.











% Program for plotting Simple Pendulum using Second Order ODE
clear all
close all
clc
l = 1
m = 1
g = 9.81
b = 0.05
%initial condition
x0 = [0;3];
%time points
t = linspace(0,20,500);
%solve ode
[t x] = ode45('ode_function',t,x0);
%plotting
subplot(2,1,1)
plot(t,x(:,1))
hold on
ylabel('displacement')
xlabel('time')
subplot(2,1,2)
plot(t,x(:,2))
ylabel('velocity')
xlabel('time')
%ANIMATION
x0 = 0
y0 = 0
ct = 1;
for i = 1:length(t)
x1 = l*sin(x(i,1));
y1 = -l*cos(x(i,l));
figure(2)
plot([-1 1],[0 0],'linewidth',6,'color','g');
axis([-2 2 -2 2]);
line([x0 x1],[y0 y1],'linewidth',2,'color','b');
hold on;
plot(x0,y0,'o','markersize',3,'markerfacecolor','y');
plot(x1,y1,'o','markersize',20,'markerfacecolor','r');
title('Damping of simple Pendulum');
legend('support rod','length of pendulum','fixed point','Body of pendulum');
grid on;
hold off;
M(ct) = getframe(gcf);
ct = ct+1;
end
movie(M)
videofile=VideoWriter('second_order_ode.avi','Uncompressed AVI');
open(videofile)
writeVideo(videofile,M)
close(videofile)
% Function Programme for the Simple Pendulum
function xdot = ode_function(t,x)
l = 1
m = 1
g = 9.81
b = 0.05
xdot = zeros(2,1);
xdot(1) = x(2);
xdot(2) = -(b/m)*x(2) - (g/l)*sin(x(1));
end
% Command Window Results
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
l =
1
m =
1
g =
9.8100
b =
0.0500
x0 =
0
y0 =
0
EXPLANATION (FUNCTION)
xdot = dtheeta_dt (output variable)
t = time
x = theeta
put the values for l,m,g,b as constants
xdot = zeros(2,1) - Assigning null matrix for xdot
xdot(1) = x(2) - first element is velocity, which is at x2 position
xdot(2) = (-b/m)*x(2)-(g/l)*sin(x(1)) - this equation will obtain after convertion of 2nd
order ODE to 1st order ODE
ERRORS AND CORRECTIONS
ERROR 1 - Absence of zeros command
ERROR 2 - Put x instead of x0 in initial points values
ERROR 3 - Didn't put - sign for y1 for animating in - y value direction
ERROR 4 - Not using , between x and y array matrix while plotting
ERROR 5 - writevideo instead of writeVideo while creating the AVI file.
CORRECTIONS;
ERROR 1 - Put zeros command
ERROR 2 - Put x0 instead of x in initial points values
ERROR 3 - Put - sign for y1 for animating in - y value direction
ERROR 4 - prfectly use , between x and y array matrix while plotting
ERROR 5 -correctly entered writeVideo while creating the AVI file.