Conjunt de Mandelbrot P25476


Statement
 

Graphic problem

pdf   zip

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

Sigui c=x+yic = x + yi, i sigui q(c)=x2+y2q(c) = x^2 + y^2. En general, donat un cc, no és senzill determinar si pertany al conjunt. Però se sap que cap cc tal que q(c)>4q(c) > 4 hi pertany. Així que aquí usarem una aproximació molt usual: Per a cada punt cc en qüestió, anirem comprovant que q(c)4q(c) \le 4, que q(fc(0))4q(f_c(0)) \le 4, que q(fc(fc(0)))4q(f_c(f_c(0))) \le 4, com a molt kk 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 kk vegades, suposarem que sí que hi pertany. Com mes gran sigui kk, 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 c1c_1 i c2c_2, seguits de sis enters x1x_1, x2x_2, y1y_1, y2y_2, ee, i kk. Suposeu x1<x2x_1 < x_2, y1<y2y_1 < y_2, e1e \ge 1, i k1k \ge 1.

Sortida

Genereu una imatge (x2x1+1,y2y1+1)(x_2 - x_1 + 1, y_2 - y_1 + 1). El paràmetre ee indica l’escalat de la imatge: Les xx a considerar són x1/e,(x1+1)/e,,(x21)/ex_1/e, (x_1 + 1)/e, \dots, (x_2 - 1)/e, i x2/ex_2/e, i de forma similar amb les yy. (Com a mostra, el primer exemple d’entrada té les xx entre 1.5-1.5 i 0.70.7, i les yy entre 1-1 i 11, ambdues dimensions amb increments de 0.010.01.) Per a cada punt p=(x,y)p = (x, y), comenceu en c=x+yic = x + yi. Si es compleix la condició mencionada anteriorment kk vegades, llavors cal pintar el punt pp de color c1c_1; altrament de color c2c_2.

Observacions

  • Recordeu que (α+βi)+(γ+δi)=(α+γ)+(β+δ)i(\alpha + \beta i) + (\gamma + \delta i) = (\alpha + \gamma) + (\beta + \delta) i.

  • Recordeu que (α+βi)(γ+δi)=(αγβδ)+(βγ+αδ)i(\alpha + \beta i) \cdot (\gamma + \delta i) = (\alpha \cdot \gamma - \beta \cdot \delta) + (\beta \cdot \gamma + \alpha \cdot \delta) 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 kk 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