PDF

Transkrypt

PDF
Metody Numeryczne : Instrukcja 5
Ł. Łaniewski-Wołłk
Creative Commons License:
Attribution Share Alike
Zadanie
Równania ruchu
Na tych laboratoriach skupimy się na scałkowaniu równania ruchu:
M ẍ = F − Sx
Zadanie
Gdzie x to odkształcenie, M to macierz masowa, zaś S to macierz sztywności.
Na początek przez y oznaczmy prędkość odkształcenia, czyli y = ẋ. Teraz mamy
układ równań pierwszego rzędu:
(
M ẏ
ẋ
Przeanalizuj dla jakich dt układ jest stabilny, a dla jakich nie.
Zastępując pochodną po lewej stronie przez różnice skończoną mamy:
xn+1 −xn
dt
= F − Sx
=y
Po prawej stronie równania możemy użyć x i y z nowej (n + 1), bądź starej (n)
iteracji. W zależności co użyjemy otrzymamy mniej lub bardziej uwikłane równanie,
a schemat będzie jawny (explicit) bądź niejawny (implicit).
Uwaga: by porównać różne schematy, każdy schemat napisz w nowej funkcji,
która powinna brać następujące argumenty: void Dynamics(int n, double * x,
double * y, double T, double dt);, gdzie x i y to początkowe wartości x i y, T
to całkowity czas całkowania, a dt to krok czasowy.
Schemat prawie jawny (almost explicit)
Na początek wstawmy po prawej stronie wartości ze starej iteracji. Otrzymamy:
(
M yn+1
xn+1
1
Napisz funkcję całkującą równanie ruchu układu wg. następującego schematu: Oblicz b = M y + dt(F − Sx) - Oblicz x = x + dty - Rozwiąż układ: M y = b - Co
10-tą iterację wyświetl belkę.
Zadanie
= F − Sx
=y
(
M yn+1dt−yn
Napisz funkcję mnożącą przez macierz masową. W pliku MesLib.h jest ona zdefiniowana w analogiczny sposób jak macierz sztywności: przez macierz M i stałą M m.
UWAGA: W mnożeniu przez macierz masową, należy także zamrozić wybrane stopnie swobody.
= M yn + dt(F − Sxn )
= xn + dtyn
Zadanie
Jak wygląda wzór na całkowitą energię układu (energia potencjalna sprężystości +
praca sił + energia kinetyczna)? Zróżniczkuj ją po t i pokaż, że jest stała
Zadanie
Wydrukuj w konsoli jak zmienia się całkowita energia układu w czasie.
Schemat pół niejawny (semi-implicit)
Prostą modyfikacją jest użycie po prawej stronie x ze starej iteracji i y z nowej,
otrzymując:
(
M yn+1 = M yn + dt(F − Sxn )
xn+1
= xn + dtyn+1
Zadanie
Zmodyfikuj kod rozwiązując układ na y przed modyfikacją x-a.
Wydział Mechaniczny Energetyki i Lotnictwa, Politechnika Warszawska
2
Metody Numeryczne : Instrukcja 5
Ł. Łaniewski-Wołłk
Creative Commons License:
Attribution Share Alike
Zadanie
W pół kroku (midpoint)
Przeanalizuj dla jakich dt układ jest stabilny. Wydrukuj zmienność energii.
Ostatnia z omówionych metod bierze po prawej stronie średnią z wartości w nowej
i starej iteracji:
(
M yn+1 = M yn + dt(F − S xn+12+xn )
xn+1
= xn + dt yn+12+yn
Schemat niejawny (fully-implicit)
Po wstawieniu drugiego równania do pierwszego mamy:
Możemy także po prawej stronie wziąć obie wartości z nowej iteracji, otrzymując:
(
M yn+1
xn+1
= M yn + dt(F − Sxn+1 )
= xn + dtyn+1
Wstawiając drugie równanie do pierwszego otrzymujemy:
M yn+1 = M yn + dt(F − S
xn + dt yn+12+yn + xn
)
2
Przekształcając:
M yn+1 = M yn + dt(F − S(xn + dt
Ostatecznie:
(M +
M yn+1 = M yn + dt(F − S(xn + dtyn+1 ))
yn+1 + yn
)
4
yn
dt2
S)yn+1 = M yn + dt(F − S(xn + dt )
4
4
Zadanie
Przekształcając:
(M + dt2 S)yn+1 = M yn + dt(F − Sxn )
Napisz funkcję mnożącą przez M +
dt2
4 S
Zadanie
Zadanie
Napisz funkcję całkującą równanie ruchu układu wg. następującego schematu: dt
Oblicz x = x + dt
4 y - Oblicz b = M y + dt(F − Sx) - Oblicz x = x + 4 y - Rozwiąż
dt2
dt
układ: (M + 4 S)y = b - Oblicz x = x + 2 y - Co 10-tą iterację wyświetl belkę.
Napisz funkcję mnożącą przez M + dt2 S
Zadanie
Zadanie
Zmodyfikuj kod, by realizował schemat w pełni niejawny, zamieniając macierz M
na M + dt2 S w obliczeniu y-ka
Przeanalizuj dla jakich dt układ jest stabilny. Wydrukuj zmienność energii.
Zadanie
Zadanie
Udowodnij, że metoda pół kroku zachowuje energię układu.1
Przeanalizuj dla jakich dt układ jest stabilny. Wydrukuj zmienność energii.
xn )
3
1 Podpowiedz:
T
T
tak jak a2 −b2 = (a+b)(a−b) to xT
n+1 M xn+1 −xn M xn = (xn+1 −xn ) M (xn+1 +
Wydział Mechaniczny Energetyki i Lotnictwa, Politechnika Warszawska
4