Tytuł Matematyczne
przygody z Pythonem Podtytuł Ilustrowany
podręcznik do nauki matematyki przez programowanie Autor Peter Farrell Język polski Wydawnictwo Wydawnictwo Naukowe PWN Tłumaczenie Natalia Chounlamany-Turalska ISBN 978-83-01-20823-3 Rok wydania 2019 Warszawa Wydanie 1 liczba stron 276 Format pdf Spis treści
Podziękowania xv
Wprowadzenie xvii Problemy ze szkolną matematyką xviii O tej książce xx Kto powinien skorzystać z tej książki xxi Co można znaleźć w tej książce? xxi Pobieranie i instalowanie Pythona xxii Uruchamianie IDLE xxiii Instalowanie oprogramowania Processing xxiii
CZĘŚĆ I: ZAPRZĘGAMY PYTHONA DO PRACY 1
1. Rysowanie wielokątów przy użyciu modułu turtle 3 Moduł turtle Pythona 4 Importowanie modułu turtle 4 Ruch żółwiem 5 Zmiana kierunku 6 Powtarzanie kodu za pomocą pętli 7 używanie pętli for 7 użytkowanie pętli for do rysowania kwadratu 9 Tworzenie skrótów przy pomocy funkcji 9 używanie zmiennych do rysowania kształtów 10 używanie zmiennych w funkcjach 11 Błędy zmiennych 12 Trójkąt równoboczny 13 Pisanie funkcji triangle() 13 Zmienianie zmiennych 14 Podsumowanie 16
2. Zamienianie żmudnej arytmetyki w zabawę przy użyciu list i pętli 19 Podstawowe operatory 19 Działania na zmiennych 20 stosowanie operatorów do pisania funkcji average() 21 Pamiętaj o kolejności wykonywania działań! 21 użytkowanie nawiasów w połączeniu z operatorami 22 Typy informacji w Pythonie 22 Liczby całkowite i zmiennoprzecinkowe 22 Łańcuchy 23 Wartości logiczne 24 Sprawdzanie typów informacji 24 wykorzystywanie list do przechowywania wartości 25 Dodawanie części do list 26 Działania na listach 26 usuwanie składników z listy 27 wykorzystywanie list w pętlach 27 Uzyskiwanie dostępu do poszczególnych komponentów przy użyciu indeksów 28 Uzyskiwanie dostępu do indeksu i wartości przy użyciu funkcji enumerate() 29 Indeksy rozpoczynają się od zera 29 Uzyskiwanie dostępu do zakresu składników listy 29 Znajdowanie indeksu elementu 30 Łańcuchy w dodatku mają indeksy 31 Sumowanie 31 Tworzenie zmiennej sumy bieżącej 32 Pisanie funkcji mysum() 33 Znajdowanie średniej dla listy liczb 33 Podsumowanie 34
3. Zgadywanie i sprawdzanie przy użyciu instrukcji warunkowych 37 Operatory porównań 38 Podejmowanie decyzji przy użyciu instrukcji if, a także else 38 używanie instrukcji warunkowych do znajdowania dzielników 40 Pisanie programu factors.py 40 Wędrujący żółw 41 Tworzenie gry w zgadywanie liczb 43 Tworzenie generatora liczb losowych 44 Zbieranie informacji 44 Zamiana danych wejściowych na liczby całkowite 45 używanie instrukcji warunkowych do sprawdzania prób odgadnięcia 45 używanie pętli do ponawiania prób odgadnięcia 46 Wskazówki dotyczące zgadywania 47 Znajdowanie pierwiastka kwadratowego 48 używanie logiki gry w zgadywanie liczb 48 Pisanie funkcji squareroot() 49 Podsumowanie 50
CZĘŚĆ II: WJEŻDŻAMY NA TERYTORIUM MATEMATYKI 51
4. Przekształcanie i przechowywanie liczb zgodnie z zasadami algebry 53 Rozwiązywanie równań pierwszego stopnia 54 Znajdowanie wzoru dla równań pierwszego stopnia 55 Pisanie funkcji equation() 56 zastosowanie print() zamiast return 57 Rozwiązywanie równań wyższego stopnia 58 Rozwiązywanie równań kwadratowych przy użyciu funkcji quad() 59 Rozwiązywanie równań sześciennych przy użyciu funkcji plug() 60 Graficzne rozwiązywanie równań 61 Rozpoczęcie pracy z Processingiem 61 Tworzenie własnego narzędzia graficznego 63 Rysowanie wykresu równania 69 Znajdowanie pierwiastków przy użyciu metody zgadywania i sprawdzania 73 Pisanie funkcji guess() 73 Podsumowanie 75
5. Przekształcanie figur przy użyciu geometrii 77 Rysowanie okręgu 78 Określanie położenia przy użyciu współrzędnych 79 Funkcje przekształceń 80 Translacje obiektów z zastosowaniem funkcji translate() 80 Obracanie obiektów z użyciem funkcji rotate() 83 Rysowanie okręgu okręgów 84 Rysowanie okręgu kwadratów 85 Animowanie obiektów 86 Tworzenie zmiennej t 86 Obracanie poszczególnych kwadratów 87 Zapisywanie orientacji przy użyciu funkcji pushmatrix() i popmatrix() 88 Obrót wokół środka 89 Tworzenie interaktywnej siatki tęczy 89 Rysowanie siatki obiektów 90 Dodawanie odcieni tęczy do obiektów 91 Rysowanie złożonych wzorów przy użyciu trójkątów 93 Trójkąt 30-60-90 94 Rysowanie trójkąta równobocznego 96 Rysowanie wielu obracających się trójkątów 98 Przesunięcia fazowe obrotu 99 Kończenie projektu 100 Podsumowanie. 102
6. Tworzenie oscylacji przy użyciu trygonometrii 103 używanie trygonometrii do obrotów i oscylacji 105 Pisanie funkcji do rysowania wielokątów 106 Rysowanie sześciokąta za pomocą pętli 107 Rysowanie trójkąta równobocznego 109 Tworzenie fal sinusoidalnych 110 Pozostawianie śladu 113 Korzystanie z zastosowanej funkcji Pythona enumerate() 114 Tworzenie programu spirografu 116 Rysowanie mniejszego okręgu 116 Wprawianie mniejszego okręgu w ruch 117 Tworzenie harmonografów 120 Pisanie programu harmonografu 121 Natychmiastowe wypełnianie listy 123 Co dwa wahadła to nie jedno 124 Podsumowanie. 126
7. Liczby zespolone 127 Układ współrzędnych płaszczyzny zespolonej 128 Dodawanie liczb zespolonych 129 Mnożenie liczby zespolonej poprzez i 130 Mnożenie dwóch liczb zespolonych 131 Pisanie funkcji magnitude() 132 Tworzenie zbioru Mandelbrota 132 Pisanie funkcji mandelbrot() 135 Dodawanie koloru do zbioru Mandelbrota 139 Tworzenie zbioru Julii 141 Pisanie funkcji julia() 141 Podsumowanie 143
8. Użytkowanie macierzy do grafiki komputerowej i układów równań 145 Co to jest macierz? 146 Dodawanie macierzy 146 Mnożenie macierzy 147 Kolejność ma znaczenie w mnożeniu macierzy 151 Rysowanie kształtów 2D 151 Przekształcanie macierzy 154 Transpozycja macierzy 156 Obracanie macierzy w czasie rzeczywistym 160 Tworzenie kształtów 3D 161 Tworzenie macierzy obrotu 162 Rozwiązywanie układów równań przy użyciu macierzy 166 Metoda eliminacja Gaussa 167 Pisanie funkcji gauss() 168 Podsumowanie 172
CZĘŚĆ III: PRZECIERAMY SZLAKI 173
9. Budowanie obiektów przy użyciu klas 175 Program z odbijającymi się piłkami 177 Wprawianie piłki w ruch 178 Odbijanie piłki od ścian 179 Tworzenie wielu piłek bez zastosowania klas 181 Tworzenie obiektów przy użyciu klas 182 Program z pasącymi się owcami 186 Pisanie klasy owcy 186 Programowanie ruchu owcy 187 Tworzenie cechy energii 189 Tworzenie trawy przy użyciu klas 189 Zmiana koloru trawy na brązowy po jej zjedzeniu 192 Nadawanie każdej owcy losowego koloru 194 Programowanie rozmnażania się owiec 196 Odrastanie trawy 197 Zapewnianie przewagi ewolucyjnej 198 Podsumowanie 200
10. Tworzenie fraktali przy użyciu rekurencji 201 Długość wybrzeża 202 Co to jest rekurencja? 203 Pisanie funkcji factorial() 203 Budowanie drzewa fraktalnego 204 Płatek Kocha 209 Pisanie funkcji segment() 210 Trójkąt Sierpińskiego 214 Fraktal bazujący na kwadracie 216 Krzywa smocza 220 Podsumowanie 224
11. Automaty komórkowe 225 Tworzenie automatu komórkowego 226 Pisanie klasy Cell 228 Zmienianie wymiaru wszelkich komórek 230 Programowanie rozwoju automatu komórkowego 231 Umieszczanie komórek w macierzy 232 Tworzenie listy komórek 233 Listy Pythona są dziwne 234 Notacja indeksów listy 235 samoczynny rozwój automatu komórkowego 238 Zasady gry w życie 238 Elementarny automat komórkowy 241 Podsumowanie 246
12. Rozwiązywanie problemów przy użyciu algorytmów genetycznych 247 używanie algorytmów genetycznych do zgadywania fraz 248 Pisanie funkcji makelist() 248 Testowanie funkcji makelist() 249 Pisanie funkcji score() 250 Pisanie funkcji mutate() 250 Generowanie liczby losowej 251 Rozwiązywanie problemu komiwojażera 254 wykorzystywanie algorytmów genetycznych 254 Pisanie metody calclength() 260 Testowanie metody calclength() 261 Losowe trasy 262 używanie idei mutacji z programu do odgadywania fraz 265 Modyfikowanie dwóch numerów z listy 265 Krzyżowanie w celu ulepszenia tras 269 Podsumowanie 272
Indeks 273