Zum Inhalt springen

Koch-Kurve

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 28. November 2007 um 16:31 Uhr durch 137.226.156.229 (Diskussion) (Programmierbeispiel). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die Koch-Kurve oder kochsche Kurve ist ein von dem schwedischen Mathematiker Helge von Koch 1904 vorgestelltes Beispiel für eine überall stetige, aber nirgends differenzierbare Kurve. Es handelt sich bei ihr ferner um eines der ersten formal beschriebenen fraktalen Objekte. Die Koch-Kurve ist eins der am häufigsten zitierten Beispiele für ein Fraktal und wurde bei der Entdeckung als Monsterkurve bezeichnet. Die Koch-Kurve ist auch in Form der kochschen Schneeflocke bekannt, die durch geeignete Kombination dreier Koch-Kurven entsteht.

Konstruktion

Man kann die Kurve anschaulich mittels eines iterativen Prozesses konstruieren (s. Lindenmayer-System). Zu Beginn besteht die Kurve aus einem einzigen Streckenstück. Die Iteration besteht nun darin, dass dieser Streckenabschnitt durch einen anderen, aus vier gleichlangen Strecken bestehenden Streckenabschnitt ersetzt wird, der wie folgt aufgebaut ist: Strecke – 60°-Winkel – Strecke – 120°-Winkel (in der Gegenrichtung) – Strecke – 60°-Winkel – Strecke. Jeder der vier neuen Streckenabschnitte hat 1/3 der Länge des ursprünglichen Streckenabschnitts. Im nächsten Schritt wird jeder der vier Streckenabschnitte durch einen Streckenabschnitt der oberen Art ersetzt. Und so weiter. Iteration einer Koch-Kurve

Diese Iteration wird nun beliebig oft wiederholt, wobei die Dreiecke stets zur selben Seite der Kurve hin zu errichten sind. Auf diese Weise ergibt sich eine Folge von Streckenzügen, die gegen die Koch-Kurve strebt.

Graphische Darstellung der Konstruktion

Die ersten drei Iterationen der Konstruktion


Nach fünf Iterationen:

Dieses Konstruktionsprinzip, bei dem iterativ jede Teilstrecke durch einen Streckenzug ersetzt wird, lässt sich auch für die Erzeugung anderer fraktaler Kurven verwenden. So wird es beispielsweise bei der Drachenkurve eingesetzt.

Das Konstruktionsprinzip ist eng verwandt mit dem der Erzeugung der Cantor-Menge, welche man erhält, wenn man das mittlere Drittel der Strecke nicht ersetzt, sondern entfernt.

Definition des Grenzwerts

Der Grenzwert dieser Iteration (z. B. als IFS-Fraktal), die eigentliche Koch-Kurve, ist in gewissem Sinne unendlich fein strukturiert und kann daher nur näherungsweise graphisch dargestellt werden. In diesem Fall lässt sich der Grenzwert einfach wie folgt definieren:

Zum Grenzwert der Iteration gehören diejenigen Punkte, die von irgendeinem Iterationsschritt an in allen folgenden Iterationen enthalten sind, sowie alle Häufungspunkte der so gebildeten Punktmenge.

Der linke Endpunkt des anfänglichen Streckenstücks ist beispielsweise in jeder Iteration enthalten und gehört damit zur Kochkurve. Der Mittelpunkt des anfänglichen Streckenstücks hingegen ist schon ab der ersten Iteration nicht mehr enthalten. Eine andere (gleichbedeutende) Grenzwertdefinition ist weiter unten durch die Parameterdarstellung gegeben.

Eigenschaften

Eigenschaften aus der fraktalen Geometrie

Die Koch-Kurve ist nach ihrer Konstruktionsvorschrift streng selbstähnlich, das heißt, es erscheinen bei beliebiger Vergrößerung immer wieder die gleichen Strukturen.

Sie hat eine Hausdorff-Dimension von

Länge und Flächeninhalt

Die Länge der Kurve ist unbegrenzt, da der Streckenzug bei jedem Iterationsschritt um den Faktor 4/3 länger wird. Nach dem -ten Iterationsschritt ist die Kurvenlänge also auf das -fache angewachsen.

Die (oben grün eingefärbte) Fläche „unterhalb“ der Kurve ist hingegen begrenzt. Wenn das Dreieck unterhalb der ersten Iteration den Flächeninhalt 1 hat, kommt bei der zweiten Iteration an jeder der 4 Strecken ein Dreieck mit Flächeninhalt 1/9 hinzu, und bei der -ten Iteration kommt ein Flächeninhalt von hinzu. Der gesamte Flächeninhalt berechnet sich demnach als geometrische Reihe zu

.

Stetigkeit und Differenzierbarkeit

Die Kurve ist überall stetig, aber nirgends differenzierbar. Zur Untersuchung dieser Eigenschaften betrachtet man die Parameterdarstellung der -ten Iteration und deren Grenzfunktion . Wenn man als Zeitpunkt auffasst, ist derjenige Punkt auf dem Streckenzug nach der -ten Iteration, den man zum Zeitpunkt erreicht, wenn man den Streckenzug mit konstanter Geschwindigkeit (allerdings mit abrupten Richtungsänderungen) vom linken zum rechten Endpunkt durchläuft. Die Funktionen sind alle stetig und konvergieren gleichmäßig gegen die Grenzfunktion , die nach einem Satz der Analysis darum ebenfalls stetig ist.

Kochsche Schneeflocke

Beginnt man den Ersetzungsprozess der Koch-Kurve nicht mit einer Strecke, sondern mit einem gleichseitigen Dreieck, dann erhält man die kochsche Schneeflocke. Sie besteht aus drei Koch-Kurven und schließt trotz ihrer unendlichen Länge nur einen Bereich mit endlicher Fläche ein.

Programmierbeispiel

Ein Programm in Logo zur Erzeugung einer Koch-Kurve mit :stufe Iterationsschritten lautet:

to kurve :stufe :laenge
make "stufe :stufe - 1
make "laenge :laenge / 3
if :stufe > 0 [kurve :stufe :laenge rt 60 kurve :stufe :laenge lt 120 kurve :stufe :laenge rt 60 kurve :stufe :laenge]
if :stufe = 0 [fd :laenge rt 60 fd :laenge lt 120 fd :laenge rt 60 fd :laenge]
end

Die Schneeflocke kann durch folgendes Programm approximiert werden:

to flocke :stufe :laenge
repeat 3 [kurve :stufe :laenge lt 120]
end

Ein Programm in KTurtle zur Erzeugung einer Koch-Kurve mit 3 Stufen und der Länge 200 lautet:

 
 reset
 canvassize 850,550
 go 125,350
 turnright 90

 learn koch x,t [
  if (t>0) [
    t = t-1
    x = x/3
    koch x,t
    turnleft 60
    koch x,t
    turnright 120
    koch x,t
    turnleft 60
    koch x,t
    ] else [
      forward 3*x
    ]
  ]

  koch 200,3

Methode in Java zum Erzeugen einer Koch-Kurve aus einem Startpunkt, einer Länge und einem Winkel: (Der Winkel ist auf die Horizontale bezogen. Der Code lässt sich anhand des oben dargestellten Bildes nachvollziehen.)

public void zeichneKurve(Graphics g, double laenge, double x1, double y1, double winkel1, int ebene) {
    double x2, y2, x3, y3, x4, y4, winkel2, winkel3;
    if(stufe > 0) {
        stufe -= 1;
        laenge /= 3;
            
        //Teilstück 1 übergeben
        zeichneKurve(g, laenge, x1, y1, winkel1, ebene);
            
        //Teilstück 2 übergeben
        x2 = x1 + laenge * Math.cos(winkel1);
        y2 = y1 + laenge * Math.sin(winkel1);
        winkel2 = winkel1 - Math.toRadians(60);
        zeichneKurve(g, laenge, x2, y2, winkel2, ebene);
            
        //Teilstück 3 übergeben
        x3 = x2 + laenge * Math.cos(winkel2);
        y3 = y2 + laenge * Math.sin(winkel2);
        winkel3 = winkel1 + Math.toRadians(60);
        zeichneKurve(g, laenge, x3, y3, winkel3, ebene);
            
        //Teilstück 4 übergeben
        x4 = x3 + laenge * Math.cos(winkel3);
        y4 = y3 + laenge * Math.sin(winkel3);
        //winkel4 = 0;
        zeichneKurve(g, laenge, x4, y4, winkel1, ebene);
    }
    else {
        //Teilstück zeichnen
        g.drawLine((int)x1, (int)y1, (int)(x1 + laenge * Math.cos(winkel1)), (int)(y1 + laenge * Math.sin(winkel1)));
    }
}

Diese Java-Methode muss in eine Klasse eingefügt werden.

Erstveröffentlichungen

  • Helge von Koch, Une courbe continue sans tangente, obtenue par une construction géometrique élémentaire. Arkiv för Matematik 1 (1904) 681-704.
  • Helge von Koch, Une méthode géométrique élémentaire pour l'étude de certaines questions de la théorie des courbes planes. Acta Mathematica 30 (1906) 145-174.
Commons: Koch-Kurve – Album mit Bildern, Videos und Audiodateien
Commons: Koch-Schneeflocke – Album mit Bildern, Videos und Audiodateien