Conjunt de Mandelbrot P25476


Statement
 

Graphic problem

pdf   zip

html

Donats dos nombres complexos c i z, sigui fc(z) = z2 + c. Donat un complex c, considereu la seqüència infinita fc(0), fc(fc(0)), … Per definició, el conjunt de Mandelbrot està compost pels valors de c tals que la seva seqüència infinita està afitada en valor absolut. Per exemple, amb c = −2 obtenim −2, 2, 2, 2, …, la qual està afitada. En canvi, amb c = 1 obtenim 1, 2, 5, 26, …, la qual tendeix a infinit. Per tant, −2 pertany al conjunt però 1 no.

Sigui c = x + yi, i sigui q(c) = x2 + y2. En general, donat un c, no és senzill determinar si pertany al conjunt. Però se sap que cap c tal que q(c) > 4 hi pertany. Així que aquí usarem una aproximació molt usual: Per a cada punt c en qüestió, anirem comprovant que q(c) ≤ 4, que q(fc(0)) ≤ 4, que q(fc(fc(0))) ≤ 4, com a molt k vegades. Si, en algun moment, la condició no es compleix, sabrem segur que el nombre no pertany al conjunt. Altrament, si la condició es compleix k vegades, suposarem que sí que hi pertany. Com mes gran sigui k, menys errors cometrà el programa, però a canvi més temps trigarà.

Feu un programa que dibuixi una zona del conjunt de Mandelbrot amb dos colors: un per als punts de dins del conjunt i l’altre per als de fora del conjunt.

Entrada

L’entrada consisteix en dos noms de colors c1 i c2, seguits de sis enters x1, x2, y1, y2, e, i k. Suposeu x1 < x2, y1 < y2, e ≥ 1, i k ≥ 1.

Sortida

Genereu una imatge (x2x1 + 1, y2y1 + 1). El paràmetre e indica l’escalat de la imatge: Les x a considerar són x1/e, (x1 + 1)/e, …, (x2 − 1)/e, i x2/e, i de forma similar amb les y. (Com a mostra, el primer exemple d’entrada té les x entre −1.5 i 0.7, i les y entre −1 i 1, ambdues dimensions amb increments de 0.01.) Per a cada punt p = (x, y), comenceu en c = x + yi. Si es compleix la condició mencionada anteriorment k vegades, llavors cal pintar el punt p de color c1; altrament de color c2.

Observacions

  • Recordeu que (α + β i) + (γ + δ i) = (α + γ) + (β + δ) i.
  • Recordeu que (α + β i) · (γ + δ i) = (α · γ − β · δ) + (β · γ + α · δ) i.
  • Els càlculs per fer aquest dibuixos són costosos. Per això els paràmetres dels jocs de proves són moderadament grossos. Proveu d’executar el vostre programa amb més punts de resolució i una k més grossa per obtenir imatges més precises.
Public test cases
  • Input

    Blue
    Orange
    -150
    70
    -100
    100
    100
    160
    

    Output

    sample-1.png

     (221×201)

  • Input

    Magenta
    Cyan
    -1200
    -800
    180
    320
    1000
    100
    

    Output

    sample-2.png

     (401×141)

  • Input

    Red
    Beige
    -250
    200
    -300
    300
    100
    2
    

    Output

    sample-3.png

     (451×601)

  • Input

    DeepPink
    Yellow
    100
    400
    -700
    -400
    1000
    60
    

    Output

    sample-4.png

     (301×301)

  • Information
    Author
    Salvador Roura
    Language
    Catalan
    Official solutions
    Python
    User solutions
    Python