Challenge

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

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.