Challenge

Week 3 - Solving second order ODEs

clc
clear all
close all

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

%Initial condition
theta_0 = [0;3];

%time points
t_span = linspace(0,20,500);

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



ct=1;
for i = 1:length(results(:,1))
        
        x0 = 0;
        y0 = 0;
        
        x1 = l*sin(results(i,1));
        y1 = -l*cos(results(i,1));
        
        %Plotting
        plot([-0.5 0.5],[0 0],'color','b','linewidth',3)
        line([x0 x1],[y0 y1],'color','b','linewidth',3)
        
        hold on
        plot(x1,y1,'o','markers',15,'markerfacecolor','r');
        
        grid on
        axis([-1.5 1.5 -1.5 0.5]);
       
        
        pause(0.01);
        M(ct) = getframe(gcf);
        hold off
        ct = ct+1;
        
end

movie(M)
videofile = VideoWriter('Pendulum.avi','Uncompressed AVI');
open(videofile)
writeVideo(videofile,M)
close(videofile)

https://youtu.be/t3hZ2lcRg9Q

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.