Opstap: Mandelbrot rekenen

Het probleem

Je bouwt stap voor stap een programma dat onderzoekt welke complexe getallen bij de mandelbrotverzameling horen. Download mandelbrot.zip en pak het archief uit. Werk in mandelbrot.py.

Installeer Pillow eenmalig als Python meldt dat de module ontbreekt:

pip install Pillow

De afbeelding-API komt later; in deze opstap werk je alleen met waarden en lussen.

Stap 1: herhaald optellen

Schrijf mult(c, n). Tel c precies n keer op bij een resultaat dat met nul begint. Gebruik een for-lus en geef het resultaat terug.

def mult(c, n):
    """Geeft c maal de positieve integer n terug met optellen."""
    ...


assert mult(3, 5) == 15
assert mult(1.5, 28) == 42.0

Stap 2: de update

Schrijf update(c, n). Begin met z = 0 en voer z = z**2 + c precies n keer uit.

def update(c, n):
    """Voert n updates uit en geeft de laatste z terug."""
    ...


assert update(1, 3) == 5
assert update(-1, 10) == 0

Stap 3: binnen of buiten

Schrijf in_mset(c, n). Geef tijdens de lus meteen False terug zodra abs(z) > 2. Als de lus klaar is zonder zo’n waarde, geef je True terug.

def in_mset(c, n):
    """Test c gedurende hoogstens n updates."""
    ...


assert in_mset(0 + 0j, 25) is True
assert in_mset(3 + 4j, 25) is False

Je hebt nu de rekenkern. In de basislaag gebruik je die kern voor een raster.