Gra w chaos: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja nieprzejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
Qblik (dyskusja | edycje)
Bardziej ogólnie (na podstawie en wiki)
HooH (dyskusja | edycje)
kod zrodlowy
Linia 9: Linia 9:
[[Grafika:Fractal fern1.jpg|right|thumb|180px|Liść paproci wygenerowany przy pomocy gry w chaos]]
[[Grafika:Fractal fern1.jpg|right|thumb|180px|Liść paproci wygenerowany przy pomocy gry w chaos]]
Bardziej ogólnie, '''gra w chaos''' to sposób generowania [[atraktor]]a lub [[Punkt stały|punktu stałego]] dowolnego [[IFS (geometria fraktalna)|systemu funkcji iterowanych]]. Zaczynając od pewnego punktu x<sub>0</sub> kolejne iteracje są dane przy pomocy wzoru x<sub>n+1</sub> = f<sup>m</sup>(x<sub>n</sub>), gdzie f<sup>m</sup>(x) jest jedną z funkcji iterowanych, wybieraną niezalężnie i losowo dla każdej iteracji. Iteracje zbiegają do punktu stałego systemu funkcji iterowanych. Jeżeli wartość początkowa x<sub>0</sub> należy do atraktora systemu funkcji iterowanych, wówczas wszystkie punkty x<sub>n</sub> również należą do tego atraktora i z [[prawdopodobieństwo|prawdopodobieństwem]] 1 tworzą w nim [[zbiór gęsty]].
Bardziej ogólnie, '''gra w chaos''' to sposób generowania [[atraktor]]a lub [[Punkt stały|punktu stałego]] dowolnego [[IFS (geometria fraktalna)|systemu funkcji iterowanych]]. Zaczynając od pewnego punktu x<sub>0</sub> kolejne iteracje są dane przy pomocy wzoru x<sub>n+1</sub> = f<sup>m</sup>(x<sub>n</sub>), gdzie f<sup>m</sup>(x) jest jedną z funkcji iterowanych, wybieraną niezalężnie i losowo dla każdej iteracji. Iteracje zbiegają do punktu stałego systemu funkcji iterowanych. Jeżeli wartość początkowa x<sub>0</sub> należy do atraktora systemu funkcji iterowanych, wówczas wszystkie punkty x<sub>n</sub> również należą do tego atraktora i z [[prawdopodobieństwo|prawdopodobieństwem]] 1 tworzą w nim [[zbiór gęsty]].

== Przykład ==

Poniższy przykład (w języku Python) generuje trójkąt Sierpińskiego przy użyciu gry w chaos, korzystając z biblioteki pygame.

<source lang="python">

from random import randint as rnd
sqr = lambda a:a*a
import pygame
scr = pygame.display.set_mode([501, 501])

pts = [complex(0, 500), complex(500, 500), complex(250, 0)]
colours = [(255, 0, 0), (0, 255, 0), (0, 0, 255)]

gameind = rnd(0, 2)
gamept = pts[gameind]

for i in range(100000):
pygame.draw.rect(scr, colours[gameind], [gamept.real, gamept.imag, 2, 2])
gameind = rnd(0, 2)
newpt = pts[gameind]
gamept += newpt
gamept /= 2

pygame.display.flip()
while True:
key = pygame.event.poll()
if key.type == pygame.KEYDOWN and key.key == pygame.K_ESCAPE:
pygame.quit()
break
pygame.time.delay(100)

</source>


== Zobacz też ==
== Zobacz też ==

Wersja z 22:11, 1 lut 2008

Trójkąt Sierpińskiego

Gra w chaos – algorytm tworzenia przybliżonego obrazu trójkąta Sierpińskiego.

Algorytm

Na początku stawia się na płaszczyźnie 3 dowolne punkty (powinny być niewspółliniowe, gdyż inaczej fraktal zdegeneruje się do odcinka), po czym wybiera sobie kolejny punkt płaszczyzny, zwany punktem gry (game point). Następnie wybiera się dowolny z trzech punktów obranych na samym początku (można je oznaczyć 1, 2 i 3, po czym korzystając z generatora liczb losowych wybierać je) i stawia punkt w połowie odległości między czwartym punktem, a tym wybranym. Powtarza się ten krok, za każdym razem oznaczając punkt leżący dokładnie w połowie odległości między ostatnio postawionym, a jednym z trzech pierwszych.

Efektem algorytmu – zakładając, że punkty były losowane z mniej więcej takim samym prawdopodobieństwem – jest pewien wariant trójkąta Sierpińskiego. Jego wierzchołkami są trzy punkty wybrane na samym początku gry.

Liść paproci wygenerowany przy pomocy gry w chaos

Bardziej ogólnie, gra w chaos to sposób generowania atraktora lub punktu stałego dowolnego systemu funkcji iterowanych. Zaczynając od pewnego punktu x0 kolejne iteracje są dane przy pomocy wzoru xn+1 = fm(xn), gdzie fm(x) jest jedną z funkcji iterowanych, wybieraną niezalężnie i losowo dla każdej iteracji. Iteracje zbiegają do punktu stałego systemu funkcji iterowanych. Jeżeli wartość początkowa x0 należy do atraktora systemu funkcji iterowanych, wówczas wszystkie punkty xn również należą do tego atraktora i z prawdopodobieństwem 1 tworzą w nim zbiór gęsty.

Przykład

Poniższy przykład (w języku Python) generuje trójkąt Sierpińskiego przy użyciu gry w chaos, korzystając z biblioteki pygame.

from random import randint as rnd
sqr = lambda a:a*a
import pygame
scr = pygame.display.set_mode([501, 501])

pts = [complex(0, 500), complex(500, 500), complex(250, 0)]
colours = [(255, 0, 0), (0, 255, 0), (0, 0, 255)]

gameind = rnd(0, 2)
gamept = pts[gameind]

for i in range(100000):
    pygame.draw.rect(scr, colours[gameind], [gamept.real, gamept.imag, 2, 2])
    gameind = rnd(0, 2)
    newpt = pts[gameind]
    gamept += newpt
    gamept /= 2

pygame.display.flip()
while True:
    key = pygame.event.poll()
    if key.type == pygame.KEYDOWN and key.key == pygame.K_ESCAPE:
        pygame.quit()
        break
    pygame.time.delay(100)

Zobacz też

Szablon:Matematyka stub