Zacznijmy od eksperymentu (Let’s start with the experiment)
Weźmy do prawej ręki taśmę z kartonu lub grubej karki papieru i lewą ręką zaginajmy ją do siebie tak, jak to ilustrują rysunki 1a i 1b.
rys. 1a rys. 1b rys. 1c
Po rozwinięciu zagiętej taśmy otrzymujemy kształt prezentowany na rys. 1c.
Zwiniętą taśmę zwijamy ponownie do siebie – jej długość ulegnie dwukrotnemu skróceniu – rys 2a, a po rozwinięciu otrzymamy kształt zaprezentowany na rys. 2b. Po kolejnym zawinięciu taśmy kształt ten przybierze postać z rysunku 3.
rys. 2a rys. 2b rys. 3
Żółw na taśmie a L-systemy (Turtle on tape and L-systems)
Gdyby po taśmie od dołu taśmy poruszał się żółw, to jego kolejne ruchy na taśmie moglibyśmy zapisać za pomocą kodu:
NP., L, NP., L, NP., P, ……
gdzie NP. oznacza ruch żółwia do przodu, zaś L lub P oznacza jego skręt w lewo lub a prawo.
Nie będą nas interesować ruchy typu NP, lecz same skręty L lub P.
Spróbujmy zapisać ciąg tych skrętów symbolami L lub P (skręt w lewo lub w prawo).
Otrzymamy:
- dla pierwszego zagięcia (2 odcinki 21) zapis L
- dla drugiego zagięcia (3 odcinki 22) zapis LLP
- dla trzeciego zagięcia (4 odcinki 2 3) zapis LLPLLPP
- dla czwartego zagięcia (5 odcinków 24) zapis LLPLLPPLLLPPLPP
itd.
Powyższe zapisy to nic innego jak kodowanie układu odcinków otrzymanych przez kolejne zagięcia taśmy.
Postawmy problem: jaki kod będzie przysługiwał ruchowi żółwia po n-krotnym zagięciu taśmy?
Spróbujmy najpierw dostrzec wszystkie możliwe własności każdego kodu i zaobserwujmy, czy przenoszą się one na kolejne kody.
Co możemy zaobserwować?
- liczba liter L, P w każdym kodzie jest zawsze nieparzysta,
- musi więc istnieć w kodzie litera środkowa – zauważmy, że jest nią zawsze L,
- jeśli liczba użytych liter w „k-tym” kodzie jest równa k , to w kolejnym kodzie jest ich 2k+1,
- fragment kodu przed środkową literą L jest całym kodem z poprzedniego etapu.
A jak powstaje fragment kodu po środkowej literze L?
Można to odkryć po krótkiej obserwacji tego fragmentu. Okazuje się, że litery użyte symetrycznie względem środka L są przeciwnymi literami dla tych które są przed środkową literą L. Czyli litery L zamieniają się w P a litery P w litery L.
Dlaczego tak się dzieje? Gdzie tkwi przyczyna takiego zachowania się kodu? Wróćmy w tym celu ponownie do zaginanych kartek.
Zauważmy, że kolejne zagięcie po k-tym zagięciu to obrót poprzedniego układu zagięć.
Przeanalizujmy na poniższym aplecie kolejne zagięcia naszej taśmy jako obroty jej poprzednich zagięć w sposób dynamiczny w programie GeoGebra:
Wyobraźmy sobie, że jeden żółw porusza się od punktu START do punktu META. Pokonujemy on zakręty, kolejno: START, PPLPPLLPPPLPLL, META – rysunek 4. Jeżeli drugi żółw powraca od META do START wykonuje te same zakręty, ale notacja każdego z nich jest przeciwna, bo przeciwne są ruchy obu żółwi. Podobnie dzieje się na drodze. My skręcając w uliczkę po lewej stronie skręcamy w nią oczywiście w lewo, ale auto jadące naprzeciw nas skręcając w tę sama uliczkę skręca w prawo.
rys. 4
Zatem aby wyznaczyć kod po k-tym zagięciu kartki musimy:
- zapisać pełny kod poprzedniego zagięcia,
- następnie dopisać do niego L – to będzie środek kolejnego kodu,
- po literze L zapisujemy kod zapisany przed tą literką zamieniając każdą literę L na P i P na L.
A1 = L
A2 = LLP
A3 = LLPLLPP
A4 = LLPLLPPL LLPPLPP
A5 = LLPLLPPL LLPPLPPLLLPLLPPPLLPPLPP
….
An+1 =An * L * An-1
Tak więc mamy do czynienie z matematyczną rekurencją (recursio = [łąc] cofać).
Jakie kształty przybiorą łamane powstałe z zagięć taśmy kartonu, gdy będziemy je zaginać w nieskończoność, co praktycznie jest niemożliwe, gdyż każdą kartkę można zagiąć tylko 9–krotnie?
Dysponując komputerem można napisać program np. w bardzo popularnym niegdyś języku LOGO który wykreśli nam kształty takich krzywych. Krzywe te zaliczamy do fraktali gdyż mają one znamiona samopodobieństwa, a te, otrzymane w opisany powyżej sposób noszą nazwę smoków (dragons).
Rysunek 9 ilustruje fraktal smoka po siedmiu zagięciach a rysunek 6 po jedenastu.
rys. 5 rys. 6