.    

Mandelbrotova množina v Bashi? A proč ne?

xChaos 26. června 2010 [4773 znaků] [editováno 21. března 2011] [HowKnow]
★★★★ [ + ] 6 [8x] [ - ]
Zobrazení 2745 ← RSS 340 Facebook 20 Twitter 39 Google 45
Komentářů 1

Někteří čtenáři tohoto článku možná ještě pamatují dobu, kdy z časopisu o programování vlastnoručně opsali do svého 8bitového počítače krátký prográmek v Basicu, který jim pak po několika hodinách tvrdé práce vyplnil televizní obrazovku vybraným výřezem Mandelbrotovy množiny... #fractal #nonlinear #bash #unix #linux #programming
Zoomování fraktálním Mandelbrotovým diagramem [en.wikipedia.org] byla na pomalých 8bitových počítačích (64 KB RAM + CPU taktované podle typu na 1-4 Mhz - ale fakticky to taktování nehrálo až takovou roli, protože podstatný byl i počet cyklů potřebných na zpracování průměrné strojové instrukce) dost úmorná činnost. Zvlášť, pokud byl program pro vykreslování fraktálu naprogramován v pomalém a navíc ještě interpretovaném jazyce Basic [root.cz]. Vykreslování vícebarevné obrazovky v plném rozlišení mohlo při tehdejší rychlosti výpočtu trvat celé hodiny. A když jste stáli o zoom, tak bez ohledu na to, zda bylo třeba editovat zdrojový kód programu, a nebo autoři dodali nějakou elegantní automatizaci (např. výběr výřezu joystikem, apod.), tak jste pak na zobrazení výřezu čekali další hodiny. Na druhou stranu - to také vypovídá něco o tom, jakým druhem aktivity bylo používání 8bitových počítačů: zdaleka nešlo o takové vtažení do nekončícího proudu interaktivní multimediální záplavy, jakou je požívání PC dneska. Tehdy jste zapnuli nahrávání hry z kazetového magnetofonu a mohli jste si na několik minut jít číst - a nebo spustili uvedený program na kreslení fraktálů a mohli jste jít rovnou na celodenní výlet.

Pak přišla úžasná 90.léta se svými rychlými počítači PC na bázi CPU i386 (a později ještě rychlejšími...), a demoscéna, která se vrhla na programování v assembleru, a fraktály se náhle vykreslovaly rychleji a rychleji, často skrze ně šlo zoomovat (téměř) v reálném čase. Fraktály se staly trendy a popkulturní ikonou raných (zhulených) cyberpunkových 90. let.

A pak přišel konec tisíciletí a fraktály byly najednou out. Existovaly pravda subkultury, které na ně nikdy nedaly dopustit - třeba v projekcích na psytrance parties fraktály nikdy nepřestaly být in - ale mainstreamová popkultura se fraktálů nabažila stejně rychle, jako se jimi v 90. letech nechala okouzlit. Ostatně - není divu. Počítače jsou dnes průměrně 1000x rychlejší, a mají k dispozici průměrně 16 000x více paměti (vycházím např. z parametrů netbooku Eee - což byl mimochodem první zcela nový počítač, který jsem si koupil po snad 15ti letech, kdy jsem svá PC zásadně montoval z jednotlivých komponent nebo je kupoval z druhé ruky). Fraktály jsou dnes tedy asi stejně "zábavné", jako cesta autem na nákup do supermarketu ve srovnání s prvními motoristickými dobrodružstvími 20tého století (ještě před 1. světovou válkou).

Pokud si ale přesto chcete zavzpomínat na ty průkopnické časy, kdy se vám celkový pohled na fraktální množinu vykresloval na počítači několik hodin, tak není nic lepšího, než si na svůj Linux stáhnout a spustit některý z prohlížečů fraktálů v textovém módu. Já našel dva: černobílý (docela rychlý) a barevný (ukrutně pomalý). A právě to čekání na vykreslení vám umožní intuitivně pocítit, jaká je za tím obrázkem je schovaná spousta matematiky, a co vlastně provádějí dnešní grafické programy, které nabízí třeba zoomování fraktálů v reálném čase, apod.

  • Mandelbrot Sets in Bash [www.mathnews.uwaterloo.ca]
  • #!/bin/bash
    inmandelbrot() {
    let "mag = $1 * $1 + $2 * $2"
    if [ $mag -gt "40000" ] || [ $5 -ge $6 ]; then
    echo $5
    else
    let "r = ($1 * $1)/100 - ($2 * $2)/100 + $3"
    let "i = ($1 * $2)/100 * 2 + $4"
    let "cnt = $5 + 1"
    
    inmandelbrot r i $3 $4 $cnt $6
    fi
    }
    
    for y in $(seq -20 20);
    do
    for x in $(seq -20 20);
    do
    let "rval = x * 10"
    let "ival = y * 10"
    val=$(inmandelbrot rval ival rval ival 1 10)
    if [ $val -eq 10 ]; then
    echo -n ".";
    else
    echo -n $val;
    fi
    done
    echo
    done
  • Mandelbrot set computed in BASH [bruxy.regnet.cz]
  • 
    #!/bin/bash
    S0=S;S1=H;S2=E;S3=L;S4=L;e=echo;b=bc;I=-1;for x in {1..24};
    do R=-2;for y in {1..80};do B=0;r=0;i=0;while [ $B -le 32 ];do
    r2=`$e "$r*$r"|$b`;i2=`$e "$i*$i"|$b`;i=`$e "2*$i*$r+$I"|$b`;
    r=`$e "$r2-$i2+$R"|$b`;: $((B+=1));V=`$e "($r2 +$i2)>4"|$b`;
    if [ "$V" -eq 1 ];then break;fi;done; if [ $B -ge 32 ];then 
    $e -n " ";else U=$(((B*4)/15+30));$e -en "\E[01;$U""m";C=$((C%5));
    eval "$e -ne \$E\$S$C";: $((C+=1));fi;R=`$e "$R+0.03125"|$b`
    done;$e -e "\E[m\E(\r";I=`$e "$I+0.08333"|$b`;done      #(c)BruXy
    

    Sloupcová sazba: pokud je okno prohlížeče dostatečně velké (na monitoru s dostatečným rozlišením), zobrazí se článek ve více sloupcích (w3.org). Testováno v browserech Firefox, Opera a Chrome. Není implementováno v Internet Exploreru. Tato feature může způsobovat problémy ve starších verzích prohlížečů s jádrem Webkit (Google Chrome, Safari, Konqueror). Pokud nevidíte článek celý, zkuste zmenšit okno prohlížeče nebo použít verzi pro tisk. [zpět na začátek sloupcové sazby]
    Pokud se vám článek líbil, zkuste autora podpořit [zobrazit možnosti]
    Sdílet v síti [Identi.ca - musíte být předem přihlášeni] [Twitter] [Facebook] [Jagg.cz]
    Formátovat pro tisk [bez komentářů] [s komentáři]
    Krátká forma URL (adresy) [http://teckacz.cz/1008]
    Všechny články [od autora xChaos] [v rubrice HowKnow] [nejnovější]

    Hodnocení článku čtenáři [ + ] 6 [8x] [ - ]
    Tip: Pro moderaci článků (kladné nebo záporné hodnocení) je nutné použít browser, který podporuje javascript a cookies.
    Komentáře čtenářů
    Skrýt hodnocené nebo méně


    [] xChaos 21. března 2011 ← komentářů 5519 0 [3050x]
    [ + ] 0 [0x] [ - ] ← pro ohodnocení komentáře se není nutné nikde registrovat
    → [/-/14167] ← na komentář můžete odpovědět nebo ho sdílet
    ok, tak jsem zapojil beautyofCode:
    http://plugins.jquery.com/project/beautyOfCode

    i kdyz teda pod linuxovym firefoxem nefunguje kopirovani do clipboardu

    najít aspoň trochu přijatelné téma a vypnout číslování řádků byl docela boj :-)
     

    Počet zobrazených komentářů: 1 [celkový čas potřebný k prohledání databáze a vytvoření stránky: 0.82 sekund]

    Pozor, vložením komentáře souhlasíte s pravidly hry TečkyCZ! [zobrazit pravidla] →
    Ochrana proti spambotům - tři-krát-tři je ... ? (napište číslicí - nemělo by byt potřeba při zapnutém JavaScriptu)
    Sociální síť (přihlaste se předem, 1. řádek<=96 znaků=status, zbytek=odkaz)
    Offtopic resolver (týká se odpověď původního tématu, nebo patří jinam?)
    Přezdívka (povinně) - nepoužívejte speciální znaky, mezery=podtržítka
    E-mail (volitelně) - nebude zobrazen, zobrazí se ikonka z [www.gravatar.com]

    Nelze použít HTML [zobrazit mikrosyntax] →

    Nápověda: ve vlastním zájmu uvádějte u komentářů pouze funkční a dostupnou e-mailovou adresu. Přezdívku, která je jednou spojená s konkrétní e-mailovou adresou, už nyní nelze bez zásahu administrátora serveru spojit s jinou adresou. Uvedením neplatné e-mailové adresy si v budoucnu znemožníte upload ikonky i možnost použít některé další chystané neanonymní funkce vázané na uvedení platné e-mailové adresy.


    TečkaCZ [Nejnovější články] [Nejnovější komentáře] [Zeď vzkazů] [Zeď odkazů] [Začátek článku]

        TečkaCZ
    •  
    • Komentáře →
    • Nástěnky →
    • Debaty →
    • Články →
    • Ročníky →
    • Rubriky →
    • RSS kanály →
    • Vzhled →
    • Ostatní →
    •  
    [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
    •  
    .

    [Arachne Labs]

    [SPOJE.NET]

    [Právě dnes | Tech | Ostatní]

    Yacy P2P web search jabber.arachne.cz
    tiskové zprávy a otevřené dopisy přebíráme z nejrůznějších informačních kanálů (i bez výslovného souhlasu autorů)
    licenční práva k použitým obrázkům a grafickým motivům nejsou definována (přebírejte pouze texty bez obrázků)
    texty článků i komentáře bez uvedení copyrightu jsou chráněny GNU Free Documentation License
    založeno na Quzo engine, (G)1999-2002 David Čermák, (G)2002-2012 Michael Polák
    Quzo engine vyvíjejí Arachne Labs, webhosting sponzorují SPOJE.NET
    seznam aktuálních článků je dostupný i ve formátu RSS (XML)
    můžete také sledovat Twitter feed TečkyCZ.
    test XHTML a CSS2 validity