Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki
1
Przykład 1

Napiszmy program, który poda kolejne pary współrzędnych – w kartezjańskim układzie współrzędnych – cząstki poruszającej się zgodnie z ruchami Browna. Przyjmujemy następujące założenia:

  • umieszczamy cząsteczkę w początku układu współrzędnych (0,0),

  • kierunek ruchu wyznaczamy przez losowy kąt phi, z przedziału (0, 2π)

  • cząsteczka będzie przemieszczała się skokami na stałą odległość r,

  • symulacja ma działać przez n rund,

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

φ(0,2π)
Xn=Xn1+(rcos(φ))
Yn=Yn1+(rsin(φ))
Ważne!

W naszym programie zakładamy, że odległość r wynosi 1, a symulacja ma się wykonywać przez 13 rund.

Skorzystamy z biblioteki math, aby zaimportować niezbędne funkcje matematyczne, które wykorzystamy do wykonania obliczeń.

Linia 1. from math import sqrt przecinek sin przecinek cos przecinek pi. Linia 2. from random import randint. Linia 4. liczba podkreślnik rund znak równości 13. Linia 5. r znak równości 1. Linia 6. brown podkreślnik X znak równości otwórz nawias kwadratowy 0 zamknij nawias kwadratowy. Linia 7. brown podkreślnik Y znak równości otwórz nawias kwadratowy 0 zamknij nawias kwadratowy. Linia 9. for runda in range otwórz nawias okrągły 1 przecinek liczba podkreślnik rund plus 1 zamknij nawias okrągły dwukropek. Linia 10. kratka wylosowany kąt musi być podany w radianach średnik wymagają tego funkcje sin otwórz nawias okrągły zamknij nawias okrągły i cos otwórz nawias okrągły zamknij nawias okrągły. Linia 11. fi znak równości float otwórz nawias okrągły randint otwórz nawias okrągły 0 przecinek 360 zamknij nawias okrągły zamknij nawias okrągły asterysk pi prawy ukośnik 180. Linia 12. stare podkreślnik x znak równości brown podkreślnik X otwórz nawias kwadratowy runda minus 1 zamknij nawias kwadratowy. Linia 13. nowe podkreślnik x znak równości stare podkreślnik x plus otwórz nawias okrągły r asterysk cos otwórz nawias okrągły fi zamknij nawias okrągły zamknij nawias okrągły. Linia 14. stare podkreślnik y znak równości brown podkreślnik Y otwórz nawias kwadratowy runda minus 1 zamknij nawias kwadratowy. Linia 15. nowe podkreślnik y znak równości stare podkreślnik y plus otwórz nawias okrągły r asterysk sin otwórz nawias okrągły fi zamknij nawias okrągły zamknij nawias okrągły. Linia 16. brown podkreślnik X kropka append otwórz nawias okrągły nowe podkreślnik x zamknij nawias okrągły. Linia 17. brown podkreślnik Y kropka append otwórz nawias okrągły nowe podkreślnik y zamknij nawias okrągły. Linia 19. print otwórz nawias okrągły f cudzysłów Wartości X znak równości otwórz nawias klamrowy brown podkreślnik X zamknij nawias klamrowy cudzysłów zamknij nawias okrągły. Linia 20. print otwórz nawias okrągły f cudzysłów Wartości Y znak równości otwórz nawias klamrowy brown podkreślnik Y zamknij nawias klamrowy cudzysłów zamknij nawias okrągły.

Efektem działania programu są dwie listy, każda składająca się z n + 1 elementów. Zawierają one kartezjańskie współrzędne kolejnych punktów, w których znalazła się cząsteczka. Pierwsza współrzędna (0, 0) jest pozycją startową cząstki. Sprawdźmy zatem wartości wygenerowane przez podany algorytm (w każdym przypadku będą różne z uwagi na losowość fi).

Linia 1. Wartości X znak równości otwórz nawias kwadratowy 0 przecinek 0 kropka 6427876096865394 przecinek 0 kropka 05500235739406634 przecinek. Linia 2. 0 kropka 08990185409656742 przecinek 0 kropka 8212555557157382 przecinek. Linia 3. 0 kropka 9257840189833916 przecinek 1 kropka 1677059145830595 przecinek. Linia 4. 1 kropka 6677059145830597 przecinek 2 kropka 5157540107394856 przecinek. Linia 5. 2 kropka 3078423199217264 przecinek 2 kropka 909657343073775 przecinek. Linia 6. 2 kropka 8399008693296497 przecinek 2 kropka 9617702127347973 przecinek. Linia 7. 2 kropka 9268707160322966 zamknij nawias kwadratowy. Linia 8. Wartości Y znak równości otwórz nawias kwadratowy 0 przecinek 0 kropka 766044443118978 przecinek 1 kropka 5750614374939254 przecinek. Linia 9. 2 kropka 5744522645130212 przecinek 1 kropka 892453904450523 przecinek. Linia 10. 2 kropka 8869757998187966 przecinek 3 kropka 857271526094793 przecinek. Linia 11. 4 kropka 723296929879232 przecinek 5 kropka 2532161941124365 przecinek. Linia 12. 6 kropka 231363794846242 przecinek 7 kropka 0299993048935345 przecinek. Linia 13. 8 kropka 027563355153358 przecinek 9 kropka 02010950679468 przecinek. Linia 14. 10 kropka 019500333813776 zamknij nawias kwadratowy.

Aby zobrazować  ruch cząsteczki, wykorzystamy wartości zapisane w tablicach, (XIndeks dolny nYIndeks dolny n) w postaci par oraz funkcje z biblioteki matplotlibmatplotlibmatplotlib. Napiszemy program, który pokaże na ekranie trasę, jaką przebyła cząstka.

Ważne!

Aby zainstalować opisywaną bibliotekę, musimy wydać w systemowym terminalu polecenie:

Linia 1. pip install matplotlib.
Linia 1. kratka wczytujemy moduł i ustawiamy alias przecinek który będziemy używać w kodzie. Linia 2. import matplotlib kropka pyplot as plt. Linia 4. kratka wywołujemy metodę plot z parametrami dwukropek. Linia 5. kratka brown podkreślnik X minus tablica współrzędnych x. Linia 6. kratka brown podkreślnik Y minus tablica współrzędnych y. Linia 7. kratka cudzysłów o dwukropek cudzysłów minus określenie rodzaju punktów i linii. Linia 8. kratka color znak równości cudzysłów green cudzysłów minus określenie koloru. Linia 9. kratka linewidth znak równości 2 minus określenie szerokości linii. Linia 10. plt kropka plot otwórz nawias okrągły brown podkreślnik X przecinek brown podkreślnik Y przecinek cudzysłów o dwukropek cudzysłów przecinek color znak równości cudzysłów green cudzysłów przecinek linewidth znak równości 2 zamknij nawias okrągły. Linia 12. kratka dodajemy opis współrzędnych oraz tytuł. Linia 13. plt kropka xlabel otwórz nawias okrągły cudzysłów Współrzędne X cudzysłów zamknij nawias okrągły. Linia 14. plt kropka ylabel otwórz nawias okrągły cudzysłów Współrzędne Y cudzysłów zamknij nawias okrągły. Linia 15. plt kropka title otwórz nawias okrągły cudzysłów Ruchy Browna cudzysłów zamknij nawias okrągły. Linia 17. kratka włączamy widoczność pomocniczej siatki współrzędnych. Linia 18. plt kropka grid otwórz nawias okrągły True zamknij nawias okrągły. Linia 20. kratka uruchamiamy okno wykresu. Linia 21. plt kropka show otwórz nawias okrągły zamknij nawias okrągły.

Oto wynik działania programu dla przykładowego zestawu liczb:

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

W taki właśnie sposób możemy symulować ruchy Browna. Zmieniając wartość zmiennej r, wpływamy na obliczanie kolejnych współrzędnych (odległość, na jaką przemieści się cząstka).

Słownik

importowanie biblioteki
importowanie biblioteki

operacja, która pozwala programowi korzystać z zewnętrznych, dodatkowych modułów lub funkcji

matplotlib
matplotlib

biblioteka służąca do przedstawienia obrazów złożonych z punktów o współrzędnych  x oraz y (wykresów, histogramów, rozkładów itp.); moduł matplotlib nie jest dostępny w standardowej instalacji języka Python; należy zainstalować go, korzystając z mechanizmu pip