Erste Beispiele
Sierpinski Dreieck
Wir spielen folgendes Spiel (Barnsley's Chaos Game):
Gegeben sei ein Dreieck mit den Eckpunkten . Wir wählen einen beliebigen Startpunkt , sowie einen beliebigen Punkt , und berechnen mit der Vorschrift
den Punkt . Fahre nach diesem Schema fort, um weitere Punkte zu bestimmen.
Am einfachsten geht's, wenn man sich rasch ein Programm schreibt, das obiges Verfahren ausführt.
import random
import matplotlib.pyplot as plt
def sierpinski(n):
vertices = [(0.0,0.0), (0.5,0.85), (1.0,0.0)]
points = []
x,y = random.choice(vertices) #Startpunkt
for i in range(n):
vx,vy = random.choice(vertices) #waehle zufaellige Ecke
x = (vx+x)/2.0 #Mittelung
y = (vy+y)/2.0
points.append((x,y))
plot(points)
Noch ein Hinweis zur verblüffenden Tatsache, dass das Random Game gegen den Attraktor Sierpinski-Dreieck konvergiert. Klar und mit einfachen Argumenten wird dies im YouTube Video von Robin Truax erklärt.
Es gibt eine weitere, erstaunliche Beziehung zum Pascal'schen Dreieck, die ich von Agnes Scott habe. Und zwar kriegt man das Sierpinski-Dreieck-Muster, wenn man im Pascal'schen Dreieck alle geraden Zahlen mit einer Farbe markiert.
Das dies so ist, sieht man wie folgt ein: Bezeichne die ersten Zeilen des Pascal-Dreiecks (PD). Wir zeigen, dass aus 3 Kopien von besteht, die ein Dreieck mit geraden Koeffizienten umgeben. Die ersten Zeilen von sind natürlich identisch mit den ersten Zeilen von . Wir wollen beweisen, dass für jeden Koeffizienten in die Koeffizienten an den entsprechenden Positionen in den unteren linken und unteren rechten Dreiecken von denselben Wert (mod 2) haben wie der Koeffizient in .
Die Beweisgrundlage bildet das Theorem von Lucas. Das folgende klassische Theorem wurde 1890 von Édouard Lucas bewiesen:
Sei priom und in -adischer Notation:
Dann gilt:
Ferner gilt wie üblich , falls .
Proof
Um das Pascalsche Dreieck modulo 2 zu untersuchen, setzen wir . Der Binomialkoeffizient in Zeile und Spalte von kann in binärer Darstellung geschrieben werden, da :
In entspricht der Koeffizient an der unteren linken Ecke und an der unteren rechten Ecke . Nach Lucas’ Theorem gilt:
Alle drei Binomialkoeffizienten haben somit denselben Wert modulo 2 und damit dieselbe Farbe im Pascalschen Dreieck (mod 2). Dies beweist den ersten Teil des rekursiven Verhaltens.
Wir zeigen nun, dass die drei äquivalenten Eckdreiecke von ein Dreieck aus geraden Zahlen umgeben. Die letzte Zeile von entspricht . Die nächste Zeile, , hat Spalten . Die Werte in den äußersten Spalten ( und ) sind gleich 1, während für mindestens ein Binärbit in gleich ist. Daher ist:
Die Zeile beginnt und endet mit einer ungeraden Zahl, alle anderen Werte sind gerade. In der nächsten Zeile gilt:
Die Summe einer geraden und einer ungeraden Zahl ist ungerade, die Summe zweier gerader Zahlen ist gerade. Daher bleibt die Kette gerader Zahlen erhalten, jedoch reduziert sich ihre Länge um 1. In der letzten Zeile von gibt es keine geraden Zahlen mehr, da diese Zeile nur aus ungeraden Zahlen besteht:
Dies zeigt, dass das gewünschte Muster aus drei Kopien von und einem Dreieck aus geraden Zahlen besitzt.
Die "Blätterteig-Funktion"
Wir kneten einen Blätterteig. Bei der Herstellung wird folgendermassen vorgegangen:
Ein Stück der Länge, sagen wir , wird auf die doppelte Länge ausgewallt, , dann zusammengefaltet auf die Länge , dann wiederum auf die doppelte Länge ausgewallt, dann zusammengefaltet auf Länge , dann auf die doppelte Länge. Und so weiter ...
a) Gibt es Fixpunkte?
b) Was könnte mit Vorfixpunkte gemeint sein?
c) Findest du Vorfixpunkte?
d) Gibt es Zyklen der Länge ?
e) Gibt es Zyklen beliebiger Länge?
f) Wie sieht der Orbit von aus?
Solution
Für die Funktion brauchen wir eine Fallunterscheidung:
a) Die Fixpunktbedingungen liefern
bzw.
Also sind und Fixpunkte.
b) Ich vermute, dass ein Vorfixpunkt ein Punkt ist, der nach unendlich vielen Iterationsschritten gegen einen Fixpunkt konvergiert.
c) Zum Beispiel , denn ist nach einer Iteration beim Fixpunkt . Mit Reverse Engineering findet man unendlich viele weitere: , da . Auch ist Vorfixpunkt und somit . Für ist und mündet vermutlich in Vorfixpunkten. Interessant ist die Untersuchung für Werte mit primen Nenner, oder Stammbrüche . Rationale Zahlen scheinen hierbei erfolgsversprechend.
d) Gibt es Fixpunkte der Periode 2? Dazu müssen wir 4 Fälle anschauen. Der Startwert liegt unter bzw. oberhalb von ; er bleibt nach einer Iteration in diesem Bereich oder er wechselt den Fall. Nehmen wir zuerst an, dass Startwert sowie Funktionswert beide kleiner als sind:
und es folgt , den wir bereits kennen. Oberhalb :
Den kennen wir auch. Unten oben:
Wir haben einen echten gefunden, nämlich . Schliesslich noch die letzte Variante, obwohl wir auch die Bahn von verfolgen könnten:
Es ist also .
e) Dazu rechnet man am besten ein paar Beispiele durch und sucht nach Struktur. Ich habe beispielsweise Dreierzyklen ( oder ), Viererzyklen (, oder ) und weitere gefunden. Exemplarisch sei die Suche nach Viererzyklen kommentiert: Von den Fallunterscheidungen müssen nur die wenigsten im Detail gerechnet werden, da man Zweierzyklen wieder erkennt und Fälle durch zyklische Fortsetzung identisch sind. Man findet im wesentlichen die neuen Kandidaten (oben, unten): uuuo, uuoo, ooou. Kombinatorisch folgt also, dass es sicher immer mindestens 2 neue -Zyklen gibt, nämlich uooo ... o und ouuu ... u mit den Werten bzw. .
f) Den Orbit von lässt man am bequemsten berechnen. Zum Beispiel
x0 = 1/20
n = 10
def f(x=0):
if x<0.5:
return 2*x
else:
return 2-2*x
print(x0)
for k in range(n):
x0 = f(x0)
k = k+1
print(x0)
wird nie zyklisch.