Visualisering av komplex iteration - Mandelbrotmängden

Det komplexa talet \(z=x+yi\) kan i ett vanligt koordinatsystem representeras av punkten \((x,y)\)

Om koordinatsystemet nu delas upp i små rutor, du kan tänka dig alla pixlar på bildskärmen, kan varje pixel motsvara startvärdet \(z_0\) eller \(c\) beroende på vilken typ av iteration du vill göra. Om \(|z_n|\rightarrow\infty\) skall rutan (pixeln) färgläggas. Man kan välja olika färger beroende på hur snabbt \(|z_n|\) närmar sig oändligheten. Om \(|z_n|\) inte går mot oändligheten ska rutan inte färgas, det vill säga vara svart.

Problem 6

Mandelbrotmängden utgörs av de komplexa tal för vilka iterationen \(z_{n+1}=z_n^2+c\) med startvärde \(z_0=0\) är sådan att beloppet \(|z_n|\) inte går mot oändligheten när \(n\rightarrow\infty.\) Om \(|z_n|>2\) för något av de \(n_{max}\) första värdena på \(z\) så har det visat sig att absolutbeloppet kommer fortsätta att växa.

Nu vill vi undersöka vad som händer med \(|z_n|\) för olika värden på \(c\), det vill säga vi vill göra iterationer av iterationen. Vi låter nu varje ruta i det uppdelade koordinatsystemet motsvara det komplexa talet \(c\) och markerar med en färg (blå) där absolutbeloppet för \(|z_n|\) inte fortsätter att växa och ser om det uppstår något mönster.

Du ska nu köra ett program som beräknar absolutbeloppet och markera ut de komplexa tal som inte växer. Pseudokoden nedan beskriver programmet.

Sätt nmax till något tal över 100

Gå från y=-2 till y=2 med en viss upplösning
    Gå från x=-2 till x=2 med en viss upplösning
        Sätt c till x+iy
        Sätt z till 0
        Sätt n till 0
        Medan |z|<2 och n<nmax
            Sätt z till z^2+c
            Öka n med 1
        Upprepa
        Om n är lika med nmax (det vill säga |zn|<2)
            Rita en punkt i (x,y)
    Nästa x
Nästa y

För att använda matematiska operationer och för att rita används följande bibliotek:

import numpy as np
import matplotlib.pyplot as plt

Läs pseudokoden och se till att du förstår vad den gör. Kopiera sedan programkoden och testa att köra programmet. Pröva att ändra nmax och upplösningen för att se hur figuren ändras. Du kan också ändra vilken del av det komplexa talplanet som visas. Försök lista ut var du gör det.

Extra - snyggare bilder

Om man färglägger det komplexa talplanet utefter hur snabbt en punkt "försvinner" mot oändligheten, och dessutom ritar rektanglar som fyller upp skärmen utan att lämna tomma områden så får man en snyggare bild av Mandelbrotmängden. Detta är implementerat i denna programkod. Testa att köra detta program. Lista ut hur du zoomar in på en intressant del av Mandelbrotmängden, gör det och spara sedan bilden.