Tôi đã viết mã để vẽ Sierpinski fractal. Nó thực sự chậm vì nó sử dụng đệ quy. Có ai trong số các bạn biết tôi có thể viết cùng một mã mà không cần đệ quy để nó nhanh hơn không? Đây là mã của tôi:Tạo tam giác Sierpinski lặp lại trong 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]
]
chỉnh sửa:
Tôi đã viết nó với cách tiếp cận Chaos Game trong trường hợp ai đó đang quan tâm. Cảm ơn bạn vì câu trả lời tuyệt vời của bạn! Đây là mã:
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]]]
Hãy xem http://stackoverflow.com/questions/159590/way-to-go-from-recursion-to-iteration –
Khi tôi vẽ những thứ như vậy tôi thấy rằng việc hiển thị đồ họa có thể mất nhiều thời gian hơn tính toán các vị trí tam giác. Tôi cũng sử dụng một cách tiếp cận đệ quy (nếu có một chút khác biệt). – Szabolcs