Kuidas joonistada Mandelbroti komplekti käsitsi

Mandelbroti komplekt koosneb punktidest, mis on joonistatud keerulisele tasapinnale, et moodustada fraktal: silmatorkav kujund või vorm, milles iga osa on tegelikult terviku miniatuurne koopia. Mandelbroti komplekti peidetud uskumatult pimestavaid kujutisi oli võimalik näha 1500. aastatel tänu Rafael Bombelli arusaamale kujuteldavatest numbritest, kuid salajane universum paljastati alles siis, kui Benoit Mandelbrot ja teised hakkasid arvutite abil fraktaleid uurima. Nüüd, kui me teame, et see on olemas, saame sellele läheneda primitiivsemal viisil: käsitsi. Siin on meetod komplekti töötlemata renderduse vaatamiseks, et mõista, kuidas seda tehakse; siis mõistate palju sügavamalt renderdusi, mida saate teha paljude saadaolevate avatud lähtekoodiga arvutiprogrammide abil või mida saate vaadata CD-ROMil ja DVD-l.

1
Mõistke põhivalemist, mida sageli väljendatakse kujul z = z2 + c. See tähendab lihtsalt, et Mandelbroti universumi iga punkti kohta, mida me näha tahame, jätkame z arvutamist, kuni ilmneb üks kahest tingimusest; seejärel värvime selle, et näidata, mitu arvutust me tegime. Ärge muretsege! See selgub järgmiste sammude käigus.

2
Hankige kolm erinevat värvi pliiatsit või värvipliiatsit või vildiotsaga markereid ning kontuuri tegemiseks must pliiats või pastakas. Põhjus, miks me tahame kolme värvi, on see, et me teeme esimese ligikaudse mitte rohkem kui 3 iteratsiooniga (läbib või teisisõnu rakendame valemit kuni 3 korda punkti kohta):

3
Joonistage musta markeriga paberilehele suur 3×3 ruutu suurune tahvel.

4
Märgistage (ka mustaga) keskmine ruut (0, 0). See on ruudu täpses keskpunktis oleva punkti konstantne (c) väärtus. Oletame nüüd, et iga ruut on 2 ühikut lai, seega lisage ja/või lahutage iga ruudu x ja y väärtustele 2, kusjuures x on esimene arv ja y on teine ​​arv. Kui olete valmis, näeb see välja selline, nagu siin kuvatakse. Kui järgite lahtreid risti, peaksid y-väärtused (teine ​​arv) olema samad; alati, kui järgite lahtreid allapoole, peaksid x-väärtused (esimene arv) olema samad.

5
Arvutage valemi esimene läbimine või iteratsioon. Teie kui arvuti (tegelikult oli selle sõna algne tähendus “inimene, kes arvutab”) saate seda ise teha. Alustame järgmistest eeldustest: iga ruudu z algväärtus on (0, 0). Kui z absoluutväärtus antud punktis on suurem või võrdne 2-ga, siis öeldakse, et see punkt (ja sellele vastav ruut) on Mandelbroti komplektist välja pääsenud. Kui see juhtub, värvite ruudu vastavalt sellele punktile rakendatud valemi iteratsioonide arvule. Valige värvid, mida kasutate 1., 2. ja 3. läbimisel. Oletame, et käesoleva artikli jaoks on punane, roheline ja sinine. Arvutage z väärtus tic-tac-toe plaadi vasaku ülanurga jaoks, eeldades, et z algväärtus on 0+0i või (0, 0) (vt näpunäiteid nende esituste paremaks mõistmiseks). Kasutame valemit z = z2 + c, nagu on kirjeldatud esimeses etapis. Näete kiiresti, et sel juhul on z2+c lihtsalt c, kuna null ruudus on ikkagi null. Ja mis on c selle ruudu jaoks? (-2, 2). Määrake selle punkti absoluutväärtus; kompleksarvu (a, b) absoluutväärtus on a2 + b2 ruutjuur. Nüüd, kuna me võrdleme seda teadaoleva väärtusega: 2, saame ruutjuurte võtmist vältida, kui võrrelda a2 + b2 väärtusega 22, mis on võrdne 4-ga. Selles arvutuses a = -2 ja b = 2.( [-2]2 + 22) =(4 + 4) =8, mis on suurem kui 4. See on pärast esimest arvutust Mandelbroti komplektist välja pääsenud, kuna selle absoluutväärtus on suurem kui 2. Värvige see valitud pliiatsiga 1. söödu jaoks. Tehke sama iga laual oleva ruuduga, välja arvatud keskväljaga, mis ei pääse Mandelbrotist välja 3. sööduga (ega ka kunagi). Nii et olete kasutanud ainult kahte värvi: kõigi välimiste ruutude jaoks 1. värvi ja keskmise ruudu jaoks 3. värvi.

6
Proovime 3 korda suuremat ruutu, 9 korda 9, kuid säilitame siiski maksimaalselt 3 iteratsiooni.

7
Alustage 3. reast allapoole, sest seal läheb see kohe huvitavaks. Esimene element (-2, 1) on suurem kui 2 (kuna (-2)2 + 12 on 5), nii et värvime selle ühe punane, kuna see pääseb Mandelbroti setist esimesel söötul. Teine element (-1,5, 1) ei ole suurem kui 2. Rakendades absoluutväärtuse valemit x2+y2, mille x = -1,5 ja y = 1:(-1,5)2 = 2,2512 = 12,25 + 1 = 3,25, väiksem kui 4, nii et ruutjuur on väiksem kui 2. Nii et liigume edasi oma teise käigu juurde, arvutades z2+c, kasutades z2 otseteed (x2-y2, 2xy) (vt näpunäiteid selle otsetee toimimise kohta tuletatud), ikkagi x = -1,5 ja y = 1:(-1,5)2 – 12 saab 2,25 – 1, mis muutub 1,25; 2xy, kuna x on -1,5 ja y on 1, muutub 2(-1,5), mis annab -3,0;See annab meile z2 väärtuseks (1,25, -3)Nüüd lisage selle lahtri jaoks c (lisage x-le x, y-le y), saades (-0,25, -2)Testime, kas selle absoluutväärtus on nüüd suurem kui 2:. Arvutage x2 + y2:(-.25)2 = 0,0625-22 = 4,0625 + 4 = 4,0625, mille ruutjuur on suurem kui 2, seega on see pärast teist iteratsiooni põgenenud: meie esimene roheline! Arvutuste abil saate mõnikord numbritele pilku heites aru, millised neist Mandelbroti komplektist pääsevad. Selles näites on komponendi y suurusjärk 2, mis ruudustamisel ja teise arvu ruuduväärtusele liitmisel on suurem kui 4. Iga arvu, mis on suurem kui 4, ruutjuur on suurem kui 2. Vaadake nõuandeid Allpool on üksikasjalikum selgitus. Kolmas element c väärtusega (-1, 1) ei pääse esimesest läbimisest välja: kuna nii 1 kui ka -1 on ruudus 1, on x2+y2 2. Seega arvutame z2+ c, kasutades z2 jaoks otseteed (x2-y2, 2xy): (-1)2-12 muutub 1-1, mis on 0; 2xy on siis 2(-1) = -2; z2 = (0, -2 )liides c, saame (0, -2) + (-1, 1) = (-1, -1)See on ikka sama absoluutväärtus, mis enne (ruutjuur kahest, umbes 1,41); jätkates kolmanda iteratsiooniga: ([-1]2)-([-1]2) muutub 1-1, mis on 0 (jällegi), kuid nüüd on 2xy 2 (-1) (-1), mis on positiivne 2, saades z2 väärtuse (0, 2), lisades c, saame (0, 2) + (-1, 1) = (-1, 3), mille a2 + b2 on 10, palju suurem kui 4. Nii pääseb ka see. Värvige lahter oma kolmanda värviga, sinisega, ja liikuge edasi järgmise juurde, kuna oleme selle punktiga lõpetanud kolm iteratsiooni. Asjaolu, et me kasutame ainult kolme värvi, ilmneb siin probleemina, kuna midagi, mis põgeneb ainult pärast 3 iteratsiooni värvitakse sama värviga kui (0, 0), mis kunagi ei põgene; ilmselgelt ei näe me sellisel detailsustasemel ikkagi midagi Mandelbroti “veale” lähedast.

8
Jätkake iga lahtri arvutamist, kuni see on põgenenud või olete saavutanud maksimaalse iteratsioonide arvu (selles näites kasutatavate värvide arv: 3), seejärel värvite selle. Nii näeb maatriks 9 x 9 välja pärast 3 iteratsiooni igal ruudul… Tundub, et oleme millegi kallal!

9
Itereerige sama maatriksit uuesti rohkemate värvidega (iteratsioonidega), et paljastada järgmised paar kihti, või parem koostada pikemaajalise projekti jaoks palju suurem maatriks! Täpsemaid pilte saate: Suurendades lahtrite arvu; sellel on 81 rakku ühel küljel. Pange tähele sarnasust ülaltoodud maatriksiga 9 x 9, kuid ringil ja ovaalil on palju sujuvamad servad. Värvide arvu suurendamine (iteratsioonid); sellel on 256 punast, rohelist ja sinist varjundit, kokku 768 värvi võrreldes 3 värviga. Pange tähele, et nüüd näete tuntud Mandelbroti järve (või vea, sõltuvalt teie välimusest) piirjooni selle juures). Negatiivne külg on kuluv aeg; kui suudate iga iteratsiooni arvutada 10 sekundiga, on see umbes 2 tundi iga Mandelbroti järve lahtri kohta või selle lähedal. Kuigi see on suhteliselt väike osa maatriksist 81 x 81, kuluks selle valmimiseks tõenäoliselt aasta, isegi kui töötaksite sellega iga päev mitu tundi. Siin tuleb appi räni tüüpi arvuti.