ModSym lab id 305590 Nieznany

background image


MODELOWANIE I SYMULACJA

Wyprowadzanie równań różniczkowych ruchu prostych układów mechanicznych


Zadanie 1.

Wyprowadzić równanie różniczkowe opisujące ruch oscylatora harmonicznego wiedząc, że energia
kinetyczna i potencjalna określone są wzorami

2

2

1

1

,

2

2

E

mv

U

kx

gdzie m i k oznaczają odpowiednio masę oscylatora i współczynnik sprężystości.
Rozwiązać otrzymane równanie dla dowolnych warunków początkowych.

Zadanie 2.

Wyprowadzić równanie różniczkowe opisujące ruch wahadła matematycznego wiedząc, że energia
kinetyczna i potencjalna określone są wzorami

2

2

1

,

cos( )

2

E

ml

U

mgl

 

gdzie m oznacza masę, l – długość wahadła, g – przyspieszenie ziemskie.
Rozwiązać otrzymane równanie dla dowolnych warunków początkowych.

Zadanie 3.

Wyprowadzić równania różniczkowe opisujące ruch wahadła matematycznego zawieszonego na
elastycznej lince wiedząc, że energia kinetyczna i potencjalna określone są wzorami

2

2

2

2

2

1

2

1

2

x

y

E

m v

v

U

k

x

y

l

mgy

gdzie m oznacza masę, l – długość wahadła, g – przyspieszenie ziemskie, k – współczynnik
sprężystości.


background image

Zadanie 4.

Wyprowadzić równania różniczkowe opisujące ruch wahadła matematycznego podwieszonego na
oscylatorze wiedząc, że energia kinetyczna i potencjalna określone są wzorami

2

2

2

2

1 1

2

1

1 2

2

2

2

1

2

2

1

1

2

cos(

)

2

2

1

cos(

)

2

E

m v

m v

v v l

x

l v

U

kx

m gl

x

gdzie m

1

oznacza masę oscylatora, m

2

– masę wahadła, l – długość wahadła, g – przyspieszenie

ziemskie, k – współczynnik sprężystości sprężyny.

Wyznaczyć rozwiązanie układu równania za pomocą komendy dsolve z opcją numeric
przyjmując następujące dane: m

1

= 1, m

2

= 0.1, g = 9.81, l = 0.1, k = 100 i warunki początkowe:

1

1

2

2

(0)

0.5 , (0)

0,

(0)

,

(0)

0.

3

x

l v

x

v

Dokonać animacji ruchu wahadła korzystając z komend

> X:=t->'rhs(roz(t)[2])';Y:=t->'rhs(roz(t)[4])';
> a1:=animate(pointplot,[[X(t),0],symbol=box,symbolsize=30],
t=0..5,frames=200,color=blue,color=red):
> a2:=animate(pointplot,[[X(t)+l*sin(Y(t)),-l*cos(Y(t))],
symbol=circle,symbolsize=30],t=0..5,frames=200,color=blue,
color=red):
> a3:=animate(plot,[[[X(t),0],
[X(t)+l*sin(Y(t)),-l*cos(Y(t))]]],t=0..5,axes=none,
scaling=constrained,thickness=2,frames=200):
> display(a1,a2,a3);

background image

>

restart:

>

with(plots):

>

lagrange := proc (n, q, r, L) local i, uzm_q, uzm_r, rel_r_q, Lq,

Lr, Lrt; global row; uzm_q := seq(q[i] = q[i](t), i = 1 .. n); uzm_r
:= seq(r[i] = r[i](t), i = 1 .. n); for i to n do Lq[i] := subs([uzm_q,
uzm_r], diff(L, q[i])); Lr[i] := subs([uzm_q, uzm_r], diff(L, r[i]))
end do; for i to n do Lrt[i] := diff(Lr[i], t) end do; rel_r_q :=
seq(r[i](t) = diff(q[i](t), t), i = 1 .. n); for i to n do row[i] :=
subs(rel_r_q, Lrt[i]-Lq[i] = 0) end do; seq(row[i], i = 1 .. n) end
proc:

>
>

#Zad1

>

E := (1/2)*m*v[1]^2:

>

U := (1/2)*k*x^2:

>

L := E-U:

>

lagrange(1, x, v, L):

>
>

#Zad2

>

restart:

>

E := (1/2)*m*l^2*omega[1]^2:

>

U := -m*g*l*cos(phi[1]):

>

L := E-U:

>

lagrange(1, phi, omega, L):

>
>

#Zad3

>

restart:

>

E := (1/2)*m*(v[1]^2+v[2]^2):

>

U := (1/2)*k*(sqrt(x[1]^2+x[2]^2)-l)^2+m*g*x[2]:

>

L := E-U:

>

lagrange(2, v, x, L):

>
>

#Zad4

>

restart:

>

E :=

(1/2)*m[1]*v[1]^2+(1/2)*m[2]*(v[1]^2+2*v[1]*v[2]*l*cos(x[2])+l^2*
v[2]^2):

>

U := (1/2)*k*x[1]^2-m[2]*g*l*cos(x[2]):

>

m[1] := 1: m[2] := .1: g := 9.81: l := .1: k := 100:

>

wp := x[1](0) = .5*l, (D(x[1]))(0) = 0, x[2](0) = (1/3)*Pi,

(D(x[2]))(0) = 0:

>

L := E-U:

>

lagrange(2, x, v, L):

>

dsolve({wp, row[1], row[2]}, {x[1](t), x[2](t)}, numeric):

background image


MODELOWANIE I SYMULACJA

Modelowanie liniowego układu dyskretnego


Wyznaczyć rozwiązanie analityczne opisujące ruch liniowego układu dyskretnego przedstawionego
na rysunku

gdzie m oznacza masę poszczególnych ciał, k – sztywność każdej sprężyny, a x

i

, i = 1, 2, ...,5 –

przemieszczenia środków poszczególnych mas.

Kolejność postępowania:

1. Wyznaczyć energię kinetyczną i potencjalną układu wykorzystując zależności:

5

4

2

2

1

1

1

1

1

,

(

)

2

2

i

i

i

i

i

E

m

v

U

k

x

x

2. Wyznaczyć macierz sztywności K i bezwładności M korzystając ze wzorów:

2

2

,

ij

ij

i

j

i

j

U

E

k

m

x x

v v

 

 

Uwaga: należy zadeklarować najpierw obie macierze, by następnie wyznaczyć ich elementy
w podwójne pętli

3. Wyznaczyć macierz A związaną z macierzami K i M wzorem

1

A

M K

4. Przyjąć dane liczbowe: m = 1, k = 100 i wyznaczyć wartości i wektory własne macierzy A

korzystając z komendy Eigenvectors w postaci

> alpha,V:=Eigenvectors(A):

5. Korzystając z procedury sortowanie posortować wartości własne zmieniając

równocześnie w odpowiedni sposób pozycje kolumn w macierzy V, zawierającej wektory
własne macierzy A

> alpha,V:=sortowanie(alpha,V);

6. Dokonać normalizacji wektorów własnych względem macierzy bezwładności korzystając ze

wzoru (u

i

– kolumny macierzy V)

,

1, 2,...,

i

i

T
i

i

i

n

u

w

u Mu

background image

7. Wyznaczyć częstości drgań swobodnych korzystając z komendy map ze wzoru

,

1, 2,...,

i

i

i

n

  

gdzie

i

oznaczają posegregowane wartości własne.

8. Zadać warunki początkowe w formie wektora przemieszczeń początkowych x0

zawierającego zerowe elementy i wektora prędkości początkowych v0 zawierającego
niezerową pierwszą współrzędną równą 10

> x0:=Vector(5,[0,0,0,0,0]); v0:=Vector(5,[10,0,0,0,0]);

9. Wyznaczyć analityczne rozwiązanie opisujące ruch poszczególnych mas korzystając ze

wzoru

5

1

1

2

0

. .( 0

0 )

. .

0 cos (

)

sin (

)

T

T
i

i

i

i

i

i

t

t

t

 

 

v

x

w M x

v

w

w M x

w

10. Sporządzić wykres przemieszeń i prędkości poszczególnych mas korzystając z poniższych

komend:

> plot([seq(x[i],i=1..n)],t=0..3);
> v:=map(diff,x,t):
> plot([seq(v[i],i=1..n)],t=0..3);

11. Dokonać animacji ruchu poszczególnych mas korzystając z poniższych komend:

> seq_pkt:=seq([(j-1)*3+'x'[j],0],j=1..n);
> animate(pointplot,[[seq_pkt],symbol=box,symbolsize=50],
t=0..3,frames=100,color=red,axes=none);

12. Sporządzić wykres czasowy energii mechanicznej (E + U)

> plot(E+U,t=0..5,0..100);

13. Która ze sprężyn będzie najbardziej ściśnięta/rozciągnięta w trakcie pierwszych trzech

sekund?

background image

>

restart:

>

with(LinearAlgebra):

with(plots):

>

#sortowanie proc

>
>

#Zad1

>

E:=1/2*m*add(v[i]^2,i=1..5):

>

U:=1/2*k*add((x[i+1]-x[i])^2,i=1..4):

>
>

#Zad2

>

n:=5:

>

K:=Matrix(n):

>

M:=Matrix(n):

>

for i to n do

for j to n do
K[i,j]:=diff(U,x[i],x[j]);
M[i,j]:=diff(E,v[i],v[j]);
end do;
end do;

>

K:

>

M:

>
>

#Zad3

>

A:=1/M.K:

>
>

#Zad4

>

m:=1: k:=100:

>

alpha,V:=evalf(Eigenvectors(A)):

>
>

#Zad5

>

alpha,V:=sortowanie(alpha,V):

>
>

#Zad6

>

for i from 1 to n do

w[i]:=V[1..n,i]/(sqrt((V[1..n,i]^%T).M.V[1..n,i])):
end do:

>
>

#Zad7

>

for i from 1 to n do

omega[i]:=sqrt(alpha[i])
end do:

>
>

#Zad8

>

x0:=Vector(5,[0,0,0,0,0]):

>

v0:=Vector(5,[10,0,0,0,0]):

>
>

#Zad9

>

x:=(Transpose(w[1]).M.(x0+v0*t))*w[1]+add((Transpose(w[1]).M.(x0*cos(om
ega[i]*t)+v0*sin(omega[i]*t)/omega[i]))*w[i], i=2..5):


Wyszukiwarka

Podobne podstrony:
PO lab 5 id 364195 Nieznany
lab [5] id 258102 Nieznany
lab [1] id 258099 Nieznany
chemia fizyczna lab id 112228 Nieznany
Lab 4 id 257946 Nieznany
Lab 1 id 257555 Nieznany
fcs lab 5 id 169065 Nieznany
Bsi 08 lab id 93519 Nieznany
lab(2) id 258733 Nieznany
lab 3 2 id 259509 Nieznany
lab [3] id 258100 Nieznany
LAB 9 id 258268 Nieznany
Arduino Lab 1 id 68202 Nieznany
Pr 1st 1 1 m01 lab id 382178 Nieznany
Lab 8 id 258226 Nieznany
Lab 3 3 id 259511 Nieznany
IO lab 2 id 219711 Nieznany
P 2013 lab P id 797792 Nieznany
cw lab 1 id 122230 Nieznany

więcej podobnych podstron