From Wikipedia, the free encyclopedia
von Kochs snefnug, tillige kendt som Koch-kurven, blev beskrevet af matematikeren Helge von Koch i en artikel med titlen "Sur une courbe continue sans tangente, obtenue par une construction géométrique élémentaire", publiceret 1904 i Arkiv för matematik, astronomi och fysik. Hensigten med artiklen var at give et geometrisk mere tiltalende eksempel på en kontinuerlig kurve som savner tangent i alle punkter end det, som Karl Weierstrass havde opdaget i 1861. Siden er Koch-kurven tillige kendt som en af de tidligst beskrevne fraktaler, et begreb som formuleredes 70 år senere.
Koch-kurvens definition:
Antallet af nye linjer at operere på bliver hele tiden 4 gange det tidligere antal linjer, så antallet af linjer efter n iterationer bliver følgelig 4n. Linjen vokser i længde med en tredjedel i hver ny iteration og kommer således til sidst at blive en uendeligt lang kurve men inden for en begrænset flade. Derfor er kurvens dimensionstal ikke et heltal. Det er anledningen til, at Koch-kurven er en fraktal, (af lat; fractus, brøkdel). Koch-kurvens Hausdorffdimension er .
Denne figur dannes ved, at man begynder med en ligesidet trekant i stedet for en linje. Ved hver iteration øger omkredsen med en tredjedel. I iteration n er længden gange den oprindelige længde. Snefnuggets omkreds savner altså grænseværdi og går mod uendelig, når n går mod uendelig. Derimod konvergerer dets areal mod 8/5 gange den oprindelige trekants areal.
Følgende er en algoritme i programmeringssproget QBasic som viser von Kochs kurve som en IFS-fraktal. Koden er nok ikke alt for svær at oversætte til C/C++ eller noget andet højniveausprog forudsat, at man ved hvordan man gør for at skabe en skærmflade og skrive pixler til den. Bemærk dog at tegnet [#] modsvarer float i C og [%] er int.
SCREEN 12 RANDOMIZE TIMER rad# = ATN(1#) / 45# vinkel# = 60# * rad# skalning# = 1# / 3# bildskalning# = 200# positionx#(0) = 1# positiony#(0) = 0# positionx#(1) = COS(vinkel#) / 2# positiony#(1) = SIN(vinkel#) / 2# rotationx#(0) = skalning# rotationy#(0) = 0# rotationx#(1) = COS(vinkel#) * skalning# rotationy#(1) = -SIN(vinkel#) * skalning# x# = 0.75# y# = 0# WHILE INKEY$ = "" i% = FIX(RND * 2) t# = rotationx#(i%) * x# – rotationy#(i%) * y# + positionx#(i%) y# = rotationx#(i%) * y# + rotationy#(i%) * x# + positiony#(i%) IF FIX(RND * 2) THEN x# = t# ELSE x# = -t# PSET (320 + bildskalning# * x#, 240 – bildskalning# * y#) WEND END
Her er også et lille Python program, der virker for mig. Jeg har brugt modulet "turtle" til at udføre det. Det tegner de første 6 iterationer af snefnugget, med et farveskifte mellem hver.
1 #Koch snefugget i Python med Turtle
2 import turtle
3 Skildpadde = turtle.Turtle()
4 Skildpadde.pu()
5 Skildpadde.goto(-300, 200)
6 Skildpadde.pd()
7 farve = ['black', 'blue', 'red', 'green', 'purple', 'black']
8 sidelaengde = 729
9 sekvens = []
10 TEMPseq = []
11 #For-loop, der styrer antallet at iterationer
12 #Skildpadden, der går frem og tilbage(linie 23+24) sletter blot den midterste 3.-del
13 #fra foregående iteration - ganske som man ville, hvis man selv tegnede dette monster
14 for trin in range(6):
15 Skildpadde.color(farve[trin])
16 for ii in range(3):
17 for s in sekvens:
18 Skildpadde.fd(sidelaengde)
19 if s == 'h':
20 Skildpadde.rt(120)
21 if s == 'v':
22 Skildpadde.color('white')
23 Skildpadde.fd(sidelaengde)
24 Skildpadde.bk(sidelaengde)
25 Skildpadde.color(farve[trin])
26 Skildpadde.lt(60)
27 Skildpadde.fd(sidelaengde)
28 Skildpadde.rt(120)
29 #her laves næste iteration
30 TEMPseq = list(sekvens)
31 for rytme in ['v', 'h', 'v']:
32 sekvens.append(rytme)
33 sekvens.extend(TEMPseq)
34 TEMPseq.clear()
35 sidelaengde = sidelaengde/3
Wikimedia Commons har medier relateret til: |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.