Wpis z mikrobloga

#fizyka #nauka #studbaza

Hej Mirki. Pomyślałem, że dzisiaj zaprezentuję wam przykład (mini-tutorial) symulacji komputerowej (a może bardziej numerycznego rozwiązywania równań różniczkowych).

Rozważymy sobie problem ciała spadającego z pewnej wysokości w jednorodnym polu grawitacyjnym bez oporu powietrza. Taki problem jest oczywiście całkowicie rozwiązywalny analitycznie, o czym zaraz się przekonamy.

Dla uproszczenia będziemy rozważać tylko jeden wymiar (ruch w pionie). Liczby umieszczone w nawiasach przed równaniami pomogą nam odnosić się do nich poźniej w tekście.

Na ciało w każdej chwili działa siła:

(1) F = -mg,

gdzie m oznacza masę ciała, a g = 9.81 m/s^2. Z drugiej zasady dynamiki Newtona przyspieszenie:

(2) a = F/m = -g = -9.81 m/s^2.

Przyspieszenie to pochodna prędkości po czasie:

(3) dv/dt = a = -9.81.

Po rozwiązaniu równ. (3) otrzymujemy prędkość spadającego ciała w funkcji czasu:

(4) v(t) = v(0) - 9.81 t.

Prędkość to pochodna wysokości po czasie:

(5) dh / dt = v.

Po podstawieniu równ. (4) do (5):

(6) dh / dt = v(0) - 9.81 t.

Po rozwiązaniu równ. (6) otrzymujemy wysokość spadającego ciała w funkcji czasu:

(7) h(t) = h(0) + v(0) t - (1/2) 9.81 t^2.

Przyjmijmy sobie następujące warunki początkowe: v(0) = 0.0; h(0) = 10.0. Wówczas równ. (4) i (7) przyjmują następujące postacie:

(8) v(t) = -9.81 t
h(t) = 10.0 - 4.905 t^2

A teraz pora na ROZWIĄZANIE NUMERYCZNE. Skorzystamy sobie tutaj z metody Eulera (która swoją drogą jest najprostszą z metod Rungego-Kutty). Jeśli znamy wartość pewnej wielkości y w czasie t, to jej wartość w czasie t+Δt można przybliżyć(!) za pomocą metody różnic skończonych:

(9) y(t+Δt) = y(t) + dy/dt Δt.

Wzór (9) można zastosować do przewidzenia wartości prędkości i wysokości ciała w czasie t+Δt (korzystając z (3) oraz z (5)):

(10) v(t+Δt) = v(t) + dv/dt Δt = v(t) -9.81 Δt

h(t+Δt) = h(t) + dh/dt Δt = h(t) + v(t) Δt

Przyjmijmy, że krok czasowy Δt = 0.2 s oraz, że v(0) = 0.0; h(0) = 10.0. Wówczas:

v(0.2) = v(0) - 9.81 x 0.2 = 0.0 - 1.962 = -1.962

h(0.2) = h(0) + v(0) x 0.2 = 10.0 + 0.0 x 0.2 = 10.0

Potem, mając v(0.2) i h(0.2), możemy obliczyć v(0.4) i h(0.4) i tak dalej. Oczywiście możemy zmniejszyć krok czasowy, aby otrzymać dokładniejsze rozwiązanie (ale nie w nieskończoność, bo wtedy duży stanie się błąd związany z przybliżaniem liczb rzeczywistych przez komputer, kalkulator, ...). Zamiast zmniejszać krok czasowy, możemy zastosować metody wyższego rzędu, na przykład metodę Rungego-Kutty 4. rzędu, i to właśnie takie rozwiązanie jest polecane, bo oprócz zwiększonej dokładności przy takim samym kroku czasowym, otrzymujemy również większą stabilność. Warto też wspomnieć, żę krok czasowy nie musi być stały, ale nie będę tego tutaj wyjaśniał.

Na niżej załączonym obrazku wykreślono zależność wysokości od czasu dla dwóch różnych kroków czasowych oraz dokładne rozwiązanie.

Co nam dają metody numeryczne. Pozwalają nam rozwiązywać problemy, których nie da się rozwiązać analitycznie. Jednym z takich problemów jest problem wielu ciał oddziałujących ze sobą np. grawitacyjnie. Matematyka pozwala nam znaleźć dokładne trajektorie co najwyżej dwóch ciał niebieskich (np. słońca i planety). Dla trzech oddziałujących ciał jest to już niemożliwe, dlatego potrzebujemy symulacji komputerowych.

Jeśli po przeczytaniu tego wpisu znajdą się osoby zainteresowane metodami numerycznymi, to w internecie można znaleźć na prawdę dużo darmowych materiałów do nauki. Na początek w zupełności wystarcza angielska wikipedia (link EN). Jeśli chodzi o implementację w jakimś języku programowania, to polecam pobawić się samemu w ramach nauki, a jeśli ktoś nie chce wyważać otwartych drzwi, to można skorzystać z książki Numerical Recipes in C.
p.....t - #fizyka #nauka #studbaza 

Hej Mirki. Pomyślałem, że dzisiaj zaprezentuję...

źródło: comment_wHj7sYVZ4eADpIbywj6gydoGKsZ2UcTD.jpg

Pobierz
  • 16
Zapomniałem o jeszcze jednej rzeczy: metody Rungego-Kutty to nie są jedyne metody numerycznego rozwiązywania równań różniczkowych. W dynamice molekularnej, jeśli zależy nam na szybkości (a generalnie zależy, bo mamy wiele, wiele atomów oddziałujących ze soba), to możemy użyć metody Verleta. Zupełnie innym typem metod są metody typu predictor-corrector.

Jeśli będzie zainteresowanie, to w następnym wpisie mogę zaprezentować metody numerycznego rozwiązywania równań różniczkowych cząstkowych, choć może się to okazać bardzo trudne w tak
Matematyka pozwala nam znaleźć dokładne trajektorie co najwyżej dwóch ciał niebieskich (np. słońca i planety). Dla trzech oddziałujących ciał jest to już niemożliwe, dlatego potrzebujemy symulacji komputerowych.


@physicist: A komputer to co? Z fusów wróży? Matematyka uber alles. Bez niej komputrów byśwa nie mieli.