Challenge

Week 3 - Solving second order ODEs

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
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.