"Matematyczne przygody z Pythonem"

Identyfikator Librowy: 212358

Spis treści

Podziękowania 16

Wprowadzenie 18

Problemy ze szkolną matematyką 19

O tej książce 21

Co można znaleźć w tej książce? 22

Kto powinien skorzystać z tej książki 22

Pobieranie i instalowanie Pythona 23

Instalowanie oprogramowania Processing 24

Uruchamianie IDLE 24

CZĘŚĆ I: ZAPRZĘGAMY PYTHONA DO PRACY 26

1. Rysowanie wielokątów przy użyciu modułu turtle 28

Moduł turtle Pythona 29

Importowanie modułu turtle 29

Ruch żółwiem 30

Zmiana kierunku 31

Powtarzanie kodu za pomocą pętli 32

Wykorzystywanie pętli for 32

Tworzenie skrótów za pomocą funkcji 34

Wykorzystywanie pętli for do rysowania kwadratu 34

Wykorzystywanie zmiennych do rysowania kształtów 35

Wykorzystywanie zmiennych w funkcjach 36

Błędy zmiennych 37

Trójkąt równoboczny 38

Pisanie funkcji triangle() 38

Zmienianie zmiennych 39

Podsumowanie 41

2. Zamienianie żmudnej arytmetyki w zabawę przy użyciu list i pętli 44

Podstawowe operatory 44

Działania na zmiennych 45

Pamiętaj o kolejności wykonywania działań! 46

Wykorzystywanie operatorów do pisania funkcji average() 46

Typy danych w Pythonie 47

Liczby całkowite i zmiennoprzecinkowe 47

Wykorzystywanie nawiasów w połączeniu z operatorami 47

Łańcuchy 48

Sprawdzanie typów danych 49

Wartości logiczne 49

Wykorzystywanie list do przechowywania wartości 50

Dodawanie elementów do list 51

Działania na listach 51

Stosowanie list w pętlach 52

Usuwanie elementów z listy 52

Uzyskiwanie dostępu do poszczególnych elementów przy użyciu indeksów 53

Indeksy rozpoczynają się od zera 54

Uzyskiwanie dostępu do indeksu i wartości przy użyciu funkcji enumerate() 54

Uzyskiwanie dostępu do zakresu elementów listy 54

Znajdowanie indeksu elementu 55

Sumowanie 56

Łańcuchy również mają indeksy 56

Tworzenie zmiennej sumy bieżącej 57

Znajdowanie średniej dla listy liczb 58

Pisanie funkcji mysum() 58

Podsumowanie 59

3. Zgadywanie i sprawdzanie przy użyciu instrukcji warunkowych 62

Operatory porównań 63

Podejmowanie decyzji przy użyciu instrukcji if oraz else 63

Wykorzystywanie instrukcji warunkowych do znajdowania dzielników 65

Pisanie programu factors.py 65

Wędrujący żółw 66

Tworzenie gry w zgadywanie liczb 68

Tworzenie generatora liczb losowych 69

Zbieranie danych 69

Wykorzystywanie instrukcji warunkowych do sprawdzania prób odgadnięcia 70

Zamiana danych wejściowych na liczby całkowite 70

Wykorzystywanie pętli do ponawiania prób odgadnięcia 71

Wskazówki dotyczące zgadywania 72

Znajdowanie pierwiastka kwadratowego 73

Stosowanie logiki gry w zgadywanie liczb 73

Pisanie funkcji squareroot() 74

Podsumowanie 75

CZĘŚĆ II: WJEŻDŻAMY NA TERYTORIUM MATEMATYKI 76

4. Przekształcanie i przechowywanie liczb zgodnie z zasadami algebry 78

Rozwiązywanie równań pierwszego stopnia 79

Znajdowanie wzoru dla równań pierwszego stopnia 80

Pisanie funkcji equation() 81

Zastosowanie print() zamiast return 82

Rozwiązywanie równań wyższego stopnia 83

Rozwiązywanie równań kwadratowych przy użyciu funkcji quad() 84

Rozwiązywanie równań sześciennych przy użyciu funkcji plug() 85

Graficzne rozwiązywanie równań 86

Rozpoczęcie pracy z Processingiem 86

Tworzenie własnego narzędzia graficznego 88

Rysowanie wykresu równania 94

Pisanie funkcji guess() 98

Znajdowanie pierwiastków przy użyciu metody zgadywania i sprawdzania 98

Podsumowanie 100

5. Przekształcanie figur przy użyciu geometrii 102

Rysowanie okręgu 103

Określanie położenia przy użyciu współrzędnych 104

Funkcje przekształceń 105

Translacje obiektów z wykorzystaniem funkcji translate() 105

Obracanie obiektów z wykorzystaniem funkcji rotate() 108

Rysowanie okręgu okręgów 109

Rysowanie okręgu kwadratów 110

Animowanie obiektów 111

Tworzenie zmiennej t 111

Obracanie poszczególnych kwadratów 112

Zapisywanie orientacji przy użyciu funkcji pushmatrix() i popmatrix() 113

Tworzenie interaktywnej siatki tęczy 114

Obrót wokół środka 114

Rysowanie siatki obiektów 115

Dodawanie kolorów tęczy do obiektów 116

Rysowanie złożonych wzorów przy użyciu trójkątów 118

Trójkąt 30-60-90 119

Rysowanie trójkąta równobocznego 121

Rysowanie wielu obracających się trójkątów 123

Przesunięcia fazowe obrotu 124

Kończenie projektu 125

Podsumowanie 127

6. Tworzenie oscylacji przy użyciu trygonometrii 128

Wykorzystywanie trygonometrii do obrotów i oscylacji 130

Pisanie funkcji do rysowania wielokątów 131

Rysowanie sześciokąta za pomocą pętli 132

Rysowanie trójkąta równobocznego 134

Tworzenie fal sinusoidalnych 135

Pozostawianie śladu 138

Korzystanie z wbudowanej funkcji Pythona enumerate() 139

Tworzenie programu spirografu 141

Rysowanie mniejszego okręgu 141

Wprawianie mniejszego okręgu w ruch 142

Tworzenie harmonografów 145

Pisanie programu harmonografu 146

Natychmiastowe wypełnianie listy 148

Co dwa wahadła to nie jedno 149

Podsumowanie 151

7. Liczby zespolone 152

Układ współrzędnych płaszczyzny zespolonej 153

Dodawanie liczb zespolonych 154

Mnożenie liczby zespolonej przez i 155

Mnożenie dwóch liczb zespolonych 156

Pisanie funkcji magnitude() 157

Tworzenie zbioru Mandelbrota 157

Pisanie funkcji mandelbrot() 160

Dodawanie koloru do zbioru Mandelbrota 164

Tworzenie zbioru Julii 166

Pisanie funkcji julia() 166

Podsumowanie 168

8. Wykorzystywanie macierzy do grafiki komputerowej i układów równań 170

Co to jest macierz? 171

Dodawanie macierzy 171

Mnożenie macierzy 172

Kolejność ma znaczenie w mnożeniu macierzy 176

Rysowanie kształtów 2D 176

Przekształcanie macierzy 179

Transpozycja macierzy 181

Obracanie macierzy w czasie rzeczywistym 185

Tworzenie kształtów 3D 186

Tworzenie macierzy obrotu 187

Rozwiązywanie układów równań przy użyciu macierzy 191

Metoda eliminacja Gaussa 192

Pisanie funkcji gauss() 193

Podsumowanie 197

CZĘŚĆ III: PRZECIERAMY SZLAKI 198

9. Budowanie obiektów przy użyciu klas 200

Program z odbijającymi się piłkami 202

Wprawianie piłki w ruch 203

Odbijanie piłki od ścian 204

Tworzenie wielu piłek bez użycia klas 206

Tworzenie obiektów przy użyciu klas 207

Program z pasącymi się owcami 211

Pisanie klasy owcy 211

Programowanie ruchu owcy 212

Tworzenie trawy przy użyciu klas 214

Tworzenie właściwości energii 214

Zmiana koloru trawy na brązowy po jej zjedzeniu 217

Nadawanie każdej owcy losowego koloru 219

Programowanie rozmnażania się owiec 221

Odrastanie trawy 222

Zapewnianie przewagi ewolucyjnej 223

Podsumowanie 225

10. Tworzenie fraktali przy użyciu rekurencji 226

Długość wybrzeża 227

Co to jest rekurencja? 228

Pisanie funkcji factorial() 228

Budowanie drzewa fraktalnego 229

Płatek Kocha 234

Pisanie funkcji segment() 235

Trójkąt Sierpińskiego 239

Fraktal bazujący na kwadracie 241

Krzywa smocza 245

Podsumowanie 249

11. Automaty komórkowe 250

Tworzenie automatu komórkowego 251

Pisanie klasy Cell 253

Zmienianie rozmiaru wszystkich komórek 255

Programowanie rozwoju automatu komórkowego 256

Umieszczanie komórek w macierzy 257

Tworzenie listy komórek 258

Listy Pythona są dziwne 259

Notacja indeksów listy 260

Zasady gry w życie 263

Automatyczny rozwój automatu komórkowego 263

Elementarny automat komórkowy 266

Podsumowanie 271

12. Rozwiązywanie problemów przy użyciu algorytmów genetycznych 272

Wykorzystywanie algorytmów genetycznych do zgadywania fraz 273

Pisanie funkcji makelist() 273

Testowanie funkcji makelist() 274

Pisanie funkcji mutate() 275

Pisanie funkcji score() 275

Generowanie liczby losowej 276

Rozwiązywanie problemu komiwojażera 279

Wykorzystywanie algorytmów genetycznych 279

Pisanie metody calclength() 285

Testowanie metody calclength() 286

Losowe trasy 287

Modyfikowanie dwóch numerów z listy 290

Stosowanie idei mutacji z programu do odgadywania fraz 290

Krzyżowanie w celu ulepszenia tras 294

Podsumowanie 297

Indeks 298