Challenge

Week 3 - Solving second order ODEs

https://drive.google.com/file/d/1BX0rwcKzGe6EJbgdL3UfbJA_ZAmKIpKa/view?usp=sharing

close all
clear all
clc


b = 0.05;
g = 9.81;
l = 1;
m = 1;


%initial conditions

theta_0 = [0;3];
 
%time points
 t_span = linspace(0,20,200);

 %solve ode
  [t, results] = ode45(@(t,theta) ode_func(t,theta,  b,g,l,m), t_span,theta_0);

  figure(1)
 plot(t,results(:,1))
hold on

  plot(t,results(:,2))
  xlabel('time')
ylabel('velcity and displacement');

x0=0;
y0=0;
 
ct = 1;
for i =1:length(t_span)

    x1=l*sin(results(i,1));
    y1=-l*cos(results(i,1));

    figure(2)
    plot([-1 1],[0,0],'linewidth',10,'color','b');
    axis([-2 2 -2 2]);
    line([x0,x1],[y0,y1],'linewidth',3,'color','r');
    hold on 
    plot(x1,y1,'o','markersize',30);
    grid on;
    hold off

    M(ct)=getframe(gcf);
    ct=ct+1;
end
   


 movie(M)
  videofile = VideoWriter('ode_main.avi');
  open(videofile)
  writeVideo(videofile, M)
  close(videofile)


function

function [dtheta_dt] = ode_func(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

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.