Modelowanie ruchów Browna

Pierwsze matematyczne modele ruchów Browna podali niezależnie od siebie Albert Einstein i polski fizyk, Marian Smoluchowski. Obydwaj naukowcy stwierdzili, że pyłek kwiatowy przemieszcza się z miejsca na miejsce, ponieważ jest nieustannie bombardowany przez cząsteczki wody; cały proces ma charakter przypadkowy.

W tym e‑materiale przedstawimy ruchy Browna w postaci graficznej, jako linię złożoną z odcinków łączących punkty w kartezjańskim układzie współrzędnych. Każdy punkt będzie odpowiadał położeniu cząsteczki na kolejnym etapie symulacji.

Kartezjański układ współrzędnych to dwie prostopadłe do siebie osie X oraz Y. Punkt ich przecięcia oznaczamy jako (0,0) – jest to środek (tzw. zero) układu współrzędnych.

RwTvdVetSmrx9
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Wstępnie przyjmiemy kilka założeń:

  • umieścimy cząsteczkę na początku układu współrzędnych (0,0),

  • kierunek ruchu będzie wyznaczony przez losowy kąt phi,

  • cząsteczka będzie przemieszczała się skokami na odległość r, zależną od kąta phi,

  • kolejne współrzędne cząsteczki (x,y) wyliczymy ze wzorów:

φ(0,2π)
Xn=Xn1+(rcos(φ))
Yn=Yn1+(rsin(φ))

W rezultacie otrzymamy tablice (listy) współrzędnych XIndeks dolny n oraz YIndeks dolny n. Pary te wskazują położenie cząsteczki po każdym skoku w przypadkowym kierunku.

Eksperyment

W celu zaobserwowania ruchów Browna, możemy przeprowadzić prosty eksperyment. Do szklanki z wodą wlewamy kilka kropli syropu. Zauważyć możemy wówczas samoistne mieszanie się płynów. Zjawisko to nazywane jest dyfuzją i spowodowane jest w dużej mierze ruchami Browna.

Kolejny eksperyment, który można wykonać w domu, polega na umieszczeniu kropli oleju w misce z wodą. Zaobserwować możemy, że kropla oleju nie pozostaje bez ruchu. Po kilku minutach cząsteczka przemieści się w inne miejsce. Po następnych kilku minutach w jeszcze inne itd. Przemieszczanie to można wytłumaczyć występowaniem ruchów Browna.

Modelowanie ruchów Browna

Model programistyczny, który przyjmiemy, będzie polegał na utworzeniu cząsteczki oraz umieszczeniu jej w płynie. W procesie losowego bombardowania cząsteczki przez cząsteczki płynu będzie przemieszczała się ona o określoną odległość. Wynikiem działania programu będzie wskazanie końcowego położenia cząsteczki.

Cząsteczkę, którą będziemy modelować, możemy opisać dwoma zmiennymi  oznaczającymi jej współrzędne w układzie kartezjańskim. Jako jej początkowe położenie przyjmiemy punkt (0, 0).

Linia 1. prawy ukośnik prawy ukośnik utworzenie cząsteczki. Linia 2. x znak równości 0 kropka 0. Linia 3. y znak równości 0 kropka 0.

Kolejnym etapem będzie symulowanie bombardowania cząsteczki przez losową cząsteczkę płynu. W tym celu musimy wygenerować losowy kąt φ , w którym przemieści się cząsteczka.

Ponieważ ruchy Browna są losowe, możemy założyć, że będziemy modelować uśrednioną wersję. Przyjmijmy zatem, że każda cząsteczka płynu uderza naszą cząstkę z taką samą siłą, w wyniku czego nasza cząsteczka przesuwa się zawsze o taką samą odległość.

W większości języków programowania wbudowane są funkcje matematyczne takie jak sinus oraz cosinus. Przyjmują one argumenty wyrażone w radianachradianradianach. Aby wyznaczyć losowy kąt φ , generujemy liczbę pseudolosową z przedziału . Języki programowania udostępniają generator liczb pseudolosowych w różny sposób, jednak my założymy, że dysponujemy funkcją random(), która generuje liczbę losową z przedziału . W celu przeskalowania tego przedziału na interesujący nas przedział wystarczy pomnożyć wylosowaną liczbę przez . Ponieważ w językach programowania dostępne są również stałe matematyczne, załóżmy, że dysponujemy stałą PI, która równa jest przybliżeniu liczby .

Linia 1. prawy ukośnik prawy ukośnik losowy kąt fi. Linia 2. fi znak równości random otwórz nawias okrągły zamknij nawias okrągły asterysk 2 asterysk PI średnik.

Jak wspomnieliśmy wcześniej, nie musimy zastanawiać się nad implementacją funkcji trygonometrycznych. Zakładamy, że dostępne są funkcje sinus() oraz cosinus(). Reprezentacją wektora będą dwie zmienne. Aby przesunąć cząsteczkę o wyznaczony wektor, dodajmy jego współrzędne odpowiednio do współrzędnych cząsteczki. Nazwijmy zatem te zmienne dx oraz dy.

Kolejne współrzędne (x, y) cząstki będą określone następującymi wzorami:

φ(0,2π)
X n = X n 1 + d x
Y n = Y n 1 + d y
Linia 1. prawy ukośnik prawy ukośnik wektor kierunku ruchu o wartości r ustawiony pod kątem fi. Linia 2. dx znak równości r asterysk cosinus otwórz nawias okrągły fi zamknij nawias okrągły. Linia 3. dy znak równości r asterysk sinus otwórz nawias okrągły fi zamknij nawias okrągły.

Na poniższej grafice widzimy wykorzystane powyżej własności:

R1GAjeGEajrzm
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Przeprowadzając modelowanie ruchów Browna, zależy nam na procesie, w którym zachodzi więcej niż tylko jedna kolizja. Aby zwiększyć ich liczbę, możemy utworzyć pętlę, która będzie symulowała n kolizji następujących po sobie. W pętli możemy również wypełniać dwie tablice, które będą przechowywały współrzędne punktów, w których znajdowała się cząsteczka. Jedna tablica jest potrzebna do przechowywania współrzędnych osi x, druga – y.

Przykładowy program modelujący ruchy Browna może być napisany zgodnie z poniższym pseudokodem.

Linia 1. prawy ukośnik prawy ukośnik liczba kolizji. Linia 2. n znak równości 100. Linia 4. prawy ukośnik prawy ukośnik długość wektora. Linia 5. r znak równości 0 kropka 1. Linia 7. prawy ukośnik prawy ukośnik początkowe położenie cząsteczki. Linia 8. x znak równości 0 kropka 0. Linia 9. y znak równości 0 kropka 0. Linia 11. prawy ukośnik prawy ukośnik tablice przechowujące kolejne pozycje cząsteczki. Linia 12. deklaracja tablicy ruchyX o wielkości n plus 1. Linia 13. deklaracja tablicy ruchyY o wielkości n plus 1. Linia 15. prawy ukośnik prawy ukośnik zapisz w tablicach początkowe położenie cząsteczki. Linia 16. ruchyX otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości x. Linia 17. ruchyY otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości y. Linia 19. dla i znak równości 1 przecinek 2 przecinek kropka kropka kropka przecinek n wykonuj. Linia 20. prawy ukośnik prawy ukośnik losowy kąt fi. Linia 21. fi znak równości random otwórz nawias okrągły zamknij nawias okrągły asterysk 2 asterysk PI średnik. Linia 23. dx znak równości r asterysk cosinus otwórz nawias okrągły fi zamknij nawias okrągły. Linia 24. dy znak równości r asterysk sinus otwórz nawias okrągły fi zamknij nawias okrągły. Linia 26. x znak równości x plus dx. Linia 27. y znak równości y plus dy. Linia 29. prawy ukośnik prawy ukośnik zapisz w tablicach obecne położenie cząsteczki. Linia 30. ruchyX otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości x. Linia 31. ruchyY otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości y. Linia 33. prawy ukośnik prawy ukośnik wypisz końcową pozycję. Linia 34. wypisz x. Linia 35. wypisz y.

Słownik

płyn
płyn

substancja, która charakteryzuje się łatwością w zmianie kształtu; płynami są głównie ciecze oraz gazy, ale także plazma

radian
radian

jednostka miary łukowej kąta płaskiego, radianów to tyle samo, co