Untitled
unknown
plain_text
a year ago
1.4 kB
4
Indexable
%ESERCIZIO 5
m=0.250; %[kg]
k=30; %[N/m]
beta=1; %[Ns/m] %coefficiente di smorzamento
y0=[-0.2;0]; %posizione iniziale, velocità iniziale nulla
g=9.81; %[m/s^2]
tspan= [0, 3];
[t, y]= ode45(@ode_sys, tspan, y0);
%calcolare i rimbalzi della massa dopo 3 secondi
bounces=0; %numero rimbalzi
for i=2:length(t) %parto da 2 perchè sennò facendo i-1 verrebbe zero
if y(i, 2) >0 && y(i-1, 2) <= 0 %rappresentano il secondo e il primo rimbalzo
bounces = bounces +1;
end
end
%altro metodo con sign
%for i=2:length(t) %parto da 2 perchè sennò facendo i-1 verrebbe zero
% if sign(y(i, 2)) > sign(y(i-1, 2)) <= 0 %rappresentano il secondo e il primo rimbalzo
% bounces = bounces +1;
% end
%end
figure;
plot(t, y(:, 1), 'b-', 'LineWidth', 1.5);
grid on;
xlabel('Tempo (s)');
ylabel('Posizione (m)');
title('Oscillazione smorzate della massa');
fprintf('Numero di rimbalzi in 3 secondi: %d', bounces);
%equazione del moto: y''=g-(k/m)y-(B/m)y'
%--> y''+(B/m)y'+(k/m)y=g
%--> y''+4y'+120y=9.81
%termine di smorzamento: B/m=4
%frequenza naturale al quadrato: k/m=120
%coefficiente di smorzamento-->
function dydt= ode_sys(t,y)
dydt= zeros(2,1); %vettore che contiene le derivate
%y(1) è la posizione
dydt(1)= y(2); %derivata prima--> velocità
dydt(2)= g-(k/m)*y(1)-(beta/m)*y(2); %derivata seconda--> accelerazione
end
Editor is loading...
Leave a Comment