Untitled

 avatar
unknown
plain_text
a month ago
1.4 kB
1
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 
Leave a Comment