Week 3 - Solving second order ODEs
clear all
close all
clc
%inputs
b = 0.05;
%gravity
g = 9.81;
%mass
m = 1;
%length
l = 1;
%initial condition
theta_0 = [0;3];
%timpespan
t_span = linspace(0,20,200);
%solving ODE
[t,results] = ode45(@(t,theta)ode_func(t,theta,b,g,l,m),t_span,theta_0); %removed some unnecessary gaps
subplot(5,4,[13,14,17,18]);
plot(t,results(:,1),'color','b');
hold on;
plot(t,results(:,2),'color','r');
hold off;
subplot(5,4,[15,16,19,20]);
plot(results(:,1),results(:,2));
xlabel('position-radians');
ylabel('Angular velocity');
ct = 1;
for i = 1:length(results(:,1))
x0 = 0;
y0 = 0;
x1 = 1*sin(results(i,1));
y1 = -1*cos(results(i,1));
subplot(5,4,[1,2,3,4,5,6,7,8,9,10,11,12]);
plot([-1 1],[0 0],'linewidth',4,'color','k');
hold on
line([x0 x1],[y0 y1],'linewidth',4,'color','b');
hold on
plot(x1,y1,'-o','markers',20,'markerfacecolor','r');
grid on;
axis([-1.5 1.5 -1.5 0.5])
pause(0.0003);
hold off
%animation
Text = sprintf("pendulum%d.png",ct);
saveas(1,Text)
ct=ct+1;
end