Cantor-set iterations
hungarian description
Itt C egy lista, aminek az első eleme a kiindulási szakasz [0,1].
Az n+1-edik tag úgy keletkezik, hogy az n-edik tagnak minden szakaszának vesszük
az egyik végpontját és a hozzá közeleb lévő harmadolópontot összekötő szakaszt, ez alkot egy új szakaszhalmazt,
aztán ugyanezt megcsináljuk, csak a másik végpont-harmadolópont szakaszra is, ez is létrehoz egy új halmazt.
Az n+1-edik tag ezen két halmaz uniójaként jön létre.
Az Iteráció[függvény(n->n+1), változó(lista1), {kezdőérték(s)}, iterációk száma(n)] parancs pedig megadja az n-edik iterációt.
Így megkaphatjuk C-t (n iterációra):
s={Szakasz((0, 0), (1, 0))}
Iteráció(
Unió(
Sorozat(
Szakasz(
Metszéspont(Kör( Középpont(Elem(lista1, i)), Hossz(Elem(lista1, i)) / 2), Elem(lista1, i), 1),
Metszéspont(Kör(Metszéspont(Kör(Középpont(Elem(lista1, i)), Hossz(Elem(lista1, i)) / 2), Elem(lista1, i), 1), Hossz(Elem(lista1, i)) / 3), Elem(lista1, i))
),
i, 1, Hossz(lista1)
),
Sorozat(
Szakasz(
Metszéspont(Kör( Középpont(Elem(lista1, i)), Hossz(Elem(lista1, i)) / 2), Elem(lista1, i), 2),
Metszéspont(Kör(Metszéspont(Kör(Középpont(Elem(lista1, i)), Hossz(Elem(lista1, i)) / 2), Elem(lista1, i), 2), Hossz(Elem(lista1, i)) / 3), Elem(lista1, i))
),
i, 1, Hossz(lista1)
)
), lista1, {s}, n)
[Magyarázat:
Az adott szakasz mindenhol Elem(lista1, i), az egyik végpontja
a szakasz és a (szakasz felezőpontja) középpontú és (szakasz hosszának fele) sugarú kör metszéspontja:
A=
Metszéspont(Kör(Középpont(Elem(lista1, i)), Hossz(Elem(lista1, i)) / 2), Elem(lista1, i), 2)
az ehhez közelebbi harmadolópont a szakasz és az A középpontú, (szakasz hosszának harmada) sugarú kör metszéspontja:
B=
Metszéspont(Kör(A, Hossz(Elem(lista1, i)) / 3), Elem(lista1, i)) =
=Metszéspont(Kör(Metszéspont(Kör(Középpont(Elem(lista1, i)), Hossz(Elem(lista1, i)) / 2), Elem(lista1, i), 2), Hossz(Elem(lista1, i)) / 3), Elem(lista1, i))
]
Ezután C^2 úgy kapható meg, hogy vesszük egy C szakaszainak bal oldali végpontját, ami úgy kapható meg, hogy
vesszük minden szakasznak az egyik végpontját és, ha jobbra van a szakasz középpontjától,
akkor tükrüözzük arra, ez lista_2.
Aztán két egymásba ágyazott sorozattal leképzünk minden (i,j) számpárt, ahol 1 < i,j < Hossz(lista1).
Így megkapjuk az összes négyzet bal alsó pontját (i;j)-ként.
Aztán vesszük az (i ; j) és (i+1/3^n ; j) pontokat és egy egyszerű sokszög paranccsal
egy négyzetet szerkesztünk föléjük :
[Az x(A) lekéri A pont x koordinátáját.]
lista2:
Sorozat(
Ha(
x(
Metszéspont(Kör(Középpont(Elem(lista_1, i)), Hossz(Elem(lista_1, i)) / 2), Elem(lista_1, i), 1)
)
>
x(
Középpont(Elem(lista_1, i))
),
Tükrözés(Metszéspont(Kör(Középpont(Elem(lista_1, i)), Hossz(Elem(lista_1, i)) / 2), Elem(lista_1, i), 1),
Középpont(Elem(lista_1, i))),
Metszéspont(Kör(Középpont(Elem(lista_1, i)), Hossz(Elem(lista_1, i)) / 2), Elem(lista_1, i), 1)
),
i, 1, Hossz(lista_1)
)