Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Macchine
Salvatori Marco matr. 0105869
2009/2010
1 Soluzione analitica
1.1 Equazioni del moto
1
1.2 Diagonalizzazione delle matrici M e K
dove [A] = [M ]−1 [K] e ω 2 sono gli autovalori. La radice quadra di questi rappre-
senta le pulsazioni del sistema e ad ognuno di queste è associato un autovettore
che rappresenta i modi di vibrare del sistema.
n o
(1) (1)
ω1 → X (1) = X1 , X2
n o
(2) (2)
ω2 → X (2) = X1 , X2
2
1.4 Listato del programma
3
2 Soluzione per integrazione numerica
L'integrazione numerica permette di approssimare, più o meno bene, una derivata
alla relativa funzione. Il metodo usato in questa esercitazione è quello di Runge
del secondo ordine, il quale avrà un'approssimazione del secondo ordine. Questo
metodo é stato sviluppato a partire dal metodo di Eulero con il quale si ap-
prossima una curva ad una serie discreta di tratti rettilinei. Poichè questo sis-
tema risulta essere instabile dato che l'errore si accentua continuando l'integrazione
,è preferibile usare il sopracitato metodo di Runge. Per applicarlo è necessario
svolgerlo con un calcolatore , usando Matlab ho creato un m.le in cui ho im-
plementato i passaggi necessari all'integrazione numerica, dopodichè ho creato
la funzione da integrare. Infatti a partire dalle equazioni del moto è necessario
creare un vettore ż imponendo che:
ẋ = ż1 ; ϑ̇ = ż2 ;
x z1 ẋ z˙1
ϑ
z2 ϑ̇ ż2
z= = ; ż = =
ẋ z3 ẍ ż3
ϑ̇ z4 ϑ̈ ż4
Posto ciò è possibile riscrivere le equazioni del moto in forma matriciale come:
0 0 1 0
0 0 0 1
0 {z}= {0}
{ż} + ka +kb −ka a+kb b
0
m m
−ka a+kb b ka a2 +kb b2
IG IG 0 0
Successivamente ho richiamato la funzione impostando i valori iniziali e il passo
di integrazione.
Di seguito sono riportati i listati delle implementazioni e i risultati numerici
diagrammati in funzione del tempo. In ne ho usato la libreria specica ODE45
per evidenziare le dierenze nei risultati nali.
function [ t,z ] = metodorunge(zp,ti,tf,zi,p)
for i=2:p
t(1)=ti;
z(1,:)=zi;
deltat=(tf-ti)/p;
t(i)=deltat*(i-1)+ti;
zp0=feval(zp,t(i-1),z(i-1,:));
zph=feval(zp , t(i-1)+deltat/2 , z(i-1,:)+zp0*deltat/2);
z(i,:)=z(i-1,:)+deltat*zph;
end;
4
function zpunto= f(t,z)
m=9; Ig=1.6; ka=2000; kb=2400; a=0.3; b=0.9;
zpunto(1)=z(3);
zpunto(2)=z(4);
zpunto(3)=((-kb-ka)/m)*z(1) +((ka*a-kb*b)/m)*z(2);
zpunto(4)=((ka*a-kb*b)/Ig)*z(1) +((-ka*(a.^2)-kb*(b.^2))/Ig)*z(2);
%...per runge...%
[t,z1]=metodorunge('f',0,5,[0.3,pi/18,10,5],1000);
%....per ode45...%
[t,z2]=ode45('f',[0,5],[0.3,pi/18,10,5]);