juliovy množiny
DESCRIPTION
Juliovy množiny. Juliova množina pro dané komplexní číslo c. Pro každý bod komplexní roviny z počítám z 0 = z Z n+1 = z n 2 + c (stejný vzorec jako u Mandelbrotovy množiny) Pokud posloupnost z n nejde do nekonečna, je bod z prvkem Juliovy množiny pro číslo c, Tuto mno žinu značíme J c. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/1.jpg)
Juliovy množiny
![Page 2: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/2.jpg)
Juliova množina pro dané komplexní číslo c
• Pro každý bod komplexní roviny z počítám• z0 = z
• Zn+1 = zn2 + c (stejný vzorec jako u
Mandelbrotovy množiny)• Pokud posloupnost zn nejde do nekonečna, je
bod z prvkem Juliovy množiny pro číslo c,• Tuto množinu značíme Jc
![Page 3: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/3.jpg)
Pozorování
• Juliova množina Jc vypadá v okolí bodu 0 podobně jako Mandelbrotova množina v okolí bodu c
• Pro body c uvnitř Mandelbrotovy množiny je (0,0) prvkem Juliovy množiny Jc a Juliova množina Jc souvislá
• Pro body c vně Mandelbrotovy množiny je Juliova množina Jc nesouvislá, popřípadě prázdná.
![Page 4: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/4.jpg)
PozorováníPro body c „hodně uvnitř“ Mandelbrotovy množiny je Juliova množina Jc nezajímavý souvislý útvar.
![Page 5: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/5.jpg)
PozorováníPro body c „hodně vně“ Mandelbrotovy množiny tvoří Juliovu množinu Jc několik izolovaných bodů
![Page 6: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/6.jpg)
Pozorování
„Nejzajímavější“ Juliovy množiny vzniknou z bodů, které leží poblíž hranice Mandelbrotovy množiny, ať již zevnitř
![Page 7: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/7.jpg)
![Page 8: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/8.jpg)
Nebo zvenku
![Page 9: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/9.jpg)
![Page 10: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/10.jpg)
Program na vykreslení Mandelbrotovy množiny
• Pascal + Assembler (zápis do video paměti)
![Page 11: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/11.jpg)
Inicializace grafického režimu #13
procedure init13;assembler; asm mov ax, $0013 int $10end;
Přerušení 10V registru ax číslo grafického režimuRežim 13: 320x200 pixelů, 256 barev
![Page 12: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/12.jpg)
Vykreslení boduprocedure bod256 (x,y:word; barva:byte); assembler; asm mov ax,$a000 {a000 = adresa počátku videopaměti} mov es,ax {a000 = adresa počátku videopaměti do es} mov di,y {y-ová souřadnice pixelu do di} mov ax,di shl di,6 shl ax,8 add di,ax {y-ovou souřadnici násobím 320 (28+26} add di,x {přičtu x-ovu souřadnici} mov al,barva mov es:[di],al {Vložím kód barvy do videopaměti = vykreslení}end;
![Page 13: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/13.jpg)
Funkce určující, zda bod patří do Mandelbrotovy množiny
function Urci_Mandelbrotovost (X,Y: Real): Integer; {výsledek 0 je v M.m., nebo číslo iterace, kdy se zjistilo, že není}const LIMIT=250; {Maximální počet iterací}var Z_Real,Z_Imagin,Re,Im:Real; POCITADLO:Integer;begin Z_Real:=0; Z_Imagin:=0; POCITADLO:=1; {z0, počet iterací} while ((Z_Real*Z_Real+Z_Imagin*Z_Imagin)<=4) and {‚zn‘<=2} (POCITADLO<LIMIT) do begin {limit počtu iterací} Re:=Z_Real*Z_Real-Z_Imagin*Z_Imagin+X; {rekurzivní předpis} Im:=2*Z_Real*Z_Imagin+Y; Z_Real:=Re; Z_Imagin:=Im; POCITADLO:=POCITADLO+1; end; if POCITADLO=LIMIT then Urci_Mandelbrotovost:=0 {zdá se, že bod je v M.m.} else Urci_Mandelbrotovost:=POCITADLO; {není tam}end;
![Page 14: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/14.jpg)
Zbytek programuprogram mandelbrotka;{$G+}
uses crt;const XMIN=-3;XMAX=1;YMIN=-1.5;YMAX=1.5; const LIMIT=10;var RADEK,SLOUPEC: word; KROKX,KROKY:Real; BARVA:byte;
begin clrscr; {Vymazání obrazovky} init13; KROKX:=(XMAX-XMIN)/300; KROKY:=(YMAX-YMIN)/200; for RADEK:=1 to 200 do for SLOUPEC:= 1 to 300 do begin
BARVA:=Urci_Mandelbrotovost(SLOUPEC*KROKX+XMIN,RADEK*KROKY+YMIN);
if BARVA > 0 then bod256 (SLOUPEC,RADEK,BARVA); {Pokud bod není v M.m., tak ho vykresli příslušnou barvou, jinak nech černý} end; Readkey; {čekej na zmáčknutí klávesy}end.
![Page 15: Juliovy množiny](https://reader033.vdocuments.mx/reader033/viewer/2022061615/568148e2550346895db5fe81/html5/thumbnails/15.jpg)
Zadání úkolu
Upravte program pro vykreslení Mandelbrotovy množiny tak, aby vykresloval Juliovu množinu.
Hodnota c může být napevno zadaná v programu.
Pokuste se odhadnout hodnotu (hodnoty) c, pro které vyjde hezký obrázek.
Program Mandelbrotka je ke stažení na http://kix.fsv.cvut.cz/~vanicek/vyuka_l10/mandelbrotka.pas