Dołącz do czytelników
Brak wyników

Matematyka dawniej i dziś

15 maja 2019

NR 38 (Maj 2019)

O smokach, drzewach i płatkach śniegowych (cz. 2)

0 72

W artykule z poprzedniego numeru „Matematyki”, 2/2019 (29), opowiedzieliśmy, w jaki sposób, wykorzystując Geometer’s Sketchpad, prosty program do nauczania geometrii szkolnej, możemy wykonać iteracje obiektów geometrycznych. W tym artykule dokończymy temat iteracji geometrycznych i opowiemy o paru ważnych wydarzeniach i odkryciach w matematyce z końca ubiegłego wieku.

L-systemy

Jeśli dokładnie się zastanowimy nad przykładami z poprzedniej części tego artykułu, to zauważymy, że są one wszystkie bardzo podobne. W każdym z nich tworzymy pewien kształt zbudowany z odcinków, a następnie zastępujemy każdy z istniejących odcinków tym właśnie kształtem. Proces ten powtarzamy wielokrotnie, aż do otrzymania pewnego, na ogół dość skomplikowanego, obiektu. Takie obiekty nazywamy L-systemami. Dla przykładu konstrukcja płatka Kocha daje się opisać symbolicznie jako L-system w następujący sposób:

  • kąt: 60 stopni,
  • figura początkowa: F (odcinek),
  • reguły: F → F-F++F-F.

Symbolika użyta tu do opisu L-systemów została opisana w monografii Prusinkiewicza i Lindemayera1. Jej źródeł można się doszukiwać w paru wcześniejszych pracach innych autorów. Najbardziej klasyczny przykład L-systemu podaje von Koch w roku 1905 i stąd mamy znany nam już płatek Kocha. U Mandelbrota2 znajdziemy doskonały werbalny opis konstrukcji płatka von Kocha.

Zwróćmy uwagę na to, co mamy w symbolicznym zapisie płatka Kocha. Mamy tu pewien kąt. Jak możemy się domyślić, jest to kąt pomiędzy sąsiednimi odcinkami. Dalej jest zrozumiała rzecz – figura początkowa. Oczywiście, figura początkowa może być bardziej skomplikowana niż jeden odcinek. Wreszcie następuje reguła mówiąca, jaką konstrukcją należy zastąpić każdy odcinek przed przejściem do kolejnego obrazu iteracji. Przy czym znak „−” oznacza kąt w lewo, a znak „+” kąt, ten sam zresztą, ale w drugą stronę. Reguł zastępowania, bo tak się je nazywa, może być znacznie więcej i mogą być niezmiernie skomplikowane. Czytelnicy znający grafikę żółwia mogą przetłumaczyć ten zapis na język żółwia, tego z LOGO, w następujący sposób:

  • F rysuj odcinek,
  • − skręć w lewo o 60 stopni,
  • + skręć w prawo o 60 stopni.

Domyślamy się, że ++ oznacza komendę skręć w prawo o 60 + 60 stopni, czyli 120.

Nazwa L-systemy pochodzi od nazwiska Aristida Lindenmayera, rzeczywistego twórcy L-systemów. To właśnie Lindenmayer, biolog zajmujący się modelowaniem organizmów żywych, w tym bakterii i roślin, wymyślił i stosował ten system. To z kolei pozwoliło na zastosowanie grafiki komputerowej do tworzenia realistycznej wizualizacji struktur roślinnych oraz ich rozwoju. Dzięki badaniom Lindenmayera i innych możemy teraz na filmach realizowanych za pomocą grafiki komputerowej oglądać magicznie wyrastające drzewa, kwiaty i wiele podobnych w strukturze obiektów. Ciekawe jest również to, że L-systemy znalazły kilka innych, nieco zaskakujących zastosowań. Dla przykładu niemiecki kompozytor urodzony w Nigerii, Hanspeter Kyburz, stosował je w muzyce.

Czytelnik zainteresowany wizualizacją L-systemów może odszukać w internecie kilka różnych narzędzi, pozwalających na wpisywanie symbolicznego kodu w postaci pokazanej na początku tego tekstu i otrzymać obraz na dowolnym kroku iteracji. Jednym z najłatwiejszych w użyciu jest program na stronie Demos, images and music autorstwa Kevina Roasta, patrz //www.kevs3d.co.uk/dev/lsystems/.

 


 
W podobny sposób, choć czasem nieco bardziej skomplikowany, można opisać pozostałe przykłady z pierwszej części tego tekstu. Za pomocą tej samej strony www możemy stworzyć wiele innych figur, a każda z nich dostarczy nam wiele materiału do pracy z uczniami. Oto jedna z takich figur z pokazanym elementem początkowym. Pytania dla uczniów będą podobne jak w poprzednich przykładach.

Krzywa kapeluszowa
 


Dwa różne stadia rozwoju krzywej kapeluszowej
Górny rysunek pokazuje krzywą kapeluszową po jednym kroku iteracji. Pogrubione linie są elementem początkowym i jednocześnie generatorem iteracji krzywej kapeluszowej. W kolejnych krokach każdy odcinek zastępujemy takim właśnie kapeluszem.
Na dolnej rycinie mamy krzywą kapeluszową po czterech krokach iteracji. W tym przypadku narysowaliśmy tylko obraz końcowy, bez generatora. W dalszych krokach krzywa będzie coraz bardziej się zagęszczała, tworząc duże puste kwadraty.
Zastosowaliśmy tu regułę zastępowania F=F+F−F−F+F z kątem 90 stopni.

Pokazana tu krzywa kapeluszowa może mieć znacznie bardziej interesującą postać, jeśli zamiast kąta 90 stopni weźmiemy kąt zbliżony, np. 85 lub 95 stopni.
 

Narzędzie do wizualizacji L-systemów na stronie Demos, images and music by Kevin Roast
Mamy tu dokładnie to, o czym wspomnieliśmy wcześniej: liczbę iteracji, kąt, aksjomat, czyli element początkowy, oraz regułę. Jedyna różnica jest taka, że symbol strzałki został zastąpiony znakiem równości.
Zauważmy również, że element początkowy, tu określany jako aksjomat, składa się z trzech odcinków, a to dlatego, że kompletny płatek Kocha zbudowany jest na trójkącie równobocznym i wtedy jest obiektem zamkniętym.
Wreszcie warto zauważyć, że mamy tu możliwość wpisania pięciu reguł, co pozwala nam tworzyć bardzo złożone obiekty.


Wyspa Kocha w wielu wydaniach

Przypuszczam, że uważni Czytelnicy zauważyli, iż krzywa kapeluszowa jest niczym innym jak modyfikacją wyspy Kocha, którą zamieściliśmy jako ostatni przykład w pierwszej części tego artykułu. Takich modyfikacji jest znacznie więcej i wiele z nich opisał między innymi Mandelbrot w książce The Fractal geometry of nature2. Popatrzmy na nie uważniej.

Trzy kolejne iteracje wyspy Kocha
Na pokazanych tu rycinach mamy trzy kolejne iteracje wyspy Kocha. Kod tego L-systemu składa się z następujących elementów:

  • odcinek: F,
  • krzywa początkowa: F+F+F+F, czyli po prostu kwadrat,
  • reguła iteracji: F=F+F−F−FF+F+F−F.

Jak łatwo można zauważyć, nasza reguła iteracji daje nam obiekt pokazany obok. Jest to właśnie to, czym zastępujemy pojedynczy odcinek. Reguła iteracji jest dość skomplikowana, ale to, co otrzymujemy z wizualnego punktu widzenia, jest dość proste. Teraz możemy sprawdzić, co będzie się działo, jak zaczniemy modyfikować regułę iteracji.

 


Na kolejnych rysunkach znajdziemy obiekt, który powstał w wyniku stosunkowo niewielkich modyfikacji kodu wyspy Kocha. Nowa reguła dla tego L-systemu ma postać: F=FF−F−F−F−F−F+F. Pozostałe parametry są dokładnie takie same, jak dla oryginalnego L-systemu.
 

Modyfikacja wyspy Kocha, iteracje 1, 2, 3 i 4
Tu mamy regułę w postaci: F=FF−F−F−F−F−F+F.

Kolejny przykład modyfikacji wyspy Kocha jest dość rzadko spotykany w literaturze. Proponuję, aby Czytelnik narysował samodzielnie generator tego L-systemu, bez spoglądania na załączony kod reguły zastępowania.
 

Inna modyfikacja wyspy Kocha, iteracje 1, 2, 3 i 4
Tu mamy regułę w postaci: F=FF−F+F−F−FF. 

Na zakończenie rozważań dotyczących wyspy Kocha proponuję zbadać inny, również stosunkowo mało znany wariant tego L-systemu.

Inna modyfikacja wyspy Kocha, iteracje 1, 2, 4 i 5
W tym L-systemie mamy regułę w postaci: F=FF−F−−F−F oraz element początkowy w postaci F−F−F−F (zamiast dotychczasowego F+F+F+F). Chodzi tu o to, aby nowe odcinki rysowały się do środka kwadratu, a nie na zewnątrz.

Krzywa Peano-Gospera

Nazwisko Giusepp...

Pozostałe 70% treści dostępne jest tylko dla Prenumeratorów.

Co zyskasz, kupując prenumeratę?
  • 6 wydań czasopisma "Matematyka"
  • Dostęp do wszystkich archiwalnych artykułów w wersji online
  • Możliwość pobrania materiałów dodatkowych, testów i zadań
  • ...i wiele więcej!
Sprawdź

Przypisy