He escrito un código que dibuja el fractal de Sierpinski. Es muy lento ya que usa recursividad. ¿Alguno de ustedes sabe cómo podría escribir el mismo código sin recurrencia para que sea más rápido? Aquí está mi código:Generando el triángulo de Sierpinski iterativamente en Mathematica?
midpoint[p1_, p2_] := Mean[{p1, p2}]
trianglesurface[A_, B_, C_] := Graphics[Polygon[{A, B, C}]]
sierpinski[A_, B_, C_, 0] := trianglesurface[A, B, C]
sierpinski[A_, B_, C_, n_Integer] :=
Show[
sierpinski[A, midpoint[A, B], midpoint[C, A], n - 1],
sierpinski[B, midpoint[A, B], midpoint[B, C], n - 1],
sierpinski[C, midpoint[C, A], midpoint[C, B], n - 1]
]
edición:
lo he escrito con el enfoque Caos juego por si alguien está interesado. ¡Gracias por tus excelentes respuestas! Aquí está el código:
random[A_, B_, C_] := Module[{a, result},
a = RandomInteger[2];
Which[a == 0, result = A,
a == 1, result = B,
a == 2, result = C]]
Chaos[A_List, B_List, C_List, S_List, n_Integer] :=
Module[{list},
list = NestList[Mean[{random[A, B, C], #}] &,
Mean[{random[A, B, C], S}], n];
ListPlot[list, Axes -> False, PlotStyle -> PointSize[0.001]]]
Eche un vistazo a http://stackoverflow.com/questions/159590/way-to-go-from-recursion-to-iteration –
Cuando estaba dibujando tales cosas, encontré que la renderización del gráfico puede llevar mucho más tiempo que computar las ubicaciones del triángulo. También utilicé un enfoque recursivo (aunque un poco diferente). – Szabolcs