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