MK-7

DRGANIA SWOBODNE LINIOWYCH UKŁADÓW DYSKRETNYCH

Wyznaczyć drgania swobodne układu przedstawionego na rysunku x

x

x

x

x

1

2

3

4

5

k

k

k

k

k

m

m

m

m

m

• Określić energię kinetyczną i potencjalną

> with(LinearAlgebra): with(plots):

> n:=5; x0:=0:

> E:=1/2*add(m*(v||i)^2,i=1..n);

> U:=1/2*add(k*(x||i-x||(i-1))^2,i=1..n);

• Wyznaczyć macierz bezwładności M i sztywności K

∂2 E

∂ U

2

m =

,

k =

ij

ij

v

∂ v

∂

x

∂ x

∂

i

j

i

j

> M:=Matrix(n):K:=Matrix(n):

> for i to n do

for j to n do

M[i,j]:=diff(E,v||i,v||j):

K[i,j]:=diff(U,x||i,x||j):

end do:

end do:

> M,K;

• Obliczyć wartości własne (w) i wektory własne (W) macierzy A = M-1K

(kolumny macierzy modalnej W są wektorami własnymi macierzy A)

> A:=M^(-1).K;

> m:=1:k:=1:

> w,W:=Eigenvectors(A);

• Uszeregować rosnąco elementy wektora wartości własnych wykorzystując procedurę sortowanie (Procedura wykorzystuje zmienne globalne: w – wektor wartości własnych i W – macierz wektorów własnych, sortując równocześnie wektory własne)

> sortowanie():

> w;

> W;

• Obliczyć wektor częstości własnych korzystając z zależności ω = w 0

i

i

> omega:=map(sqrt,w);

• Wyodrębnić wektory własne z macierzy modalnej W

> for i to n do u||i:=W[1..n,i]: ut||i:=Transpose(u||i): end do:

• Zadać wektor przemieszczeń początkowych odpowiadający kolejnym wektorom własnym

> mode:=1;

> x0:=u||mode:v0:=Vector(n):

• Zapisać rozwiązanie opisujące drgania własne układu na podstawie wzoru n 



v



x = ∑  T

u M x cos ω t

0 sin ω t

u

i

0

( i )+

( i )



 i

ω

i=1 





i



> x:=eval(add(ut||i.M.(x0*cos(omega[i]*t)+v0/omega[i]*sin(omega[i]*t))

*u||i,i=1..n)):

• Przedstawić przemieszczenia wszystkich mas na wspólnym wykresie

> plot([seq(x[i],i=1..n)],t=0..4*Pi/omega[mode]);

• Dokonać animacji ruchu układu

> animate(pointplot,[[seq([3/2*(i-1)+x[i],0],i=1..n)], symbol=box,symbolsize=50],t=0..2*Pi/omega[mode],frames=100,color=red, axes=none);

• Zadać warunek początkowy odpowiadający uderzeniu prawej skrajnej masy, sporządzić wykres i dokonać animacji ruchu

> v0[n]:=-1:x0:=Vector(n): Powtórzyć wszystkie obliczenia przyjmując: n = 8, 10

Document Outline

  • MK-7