Wpisany przez Tomasz Lubiński
wtorek, 21 lipca 2009 15:45
Zbiór Mandelbar jest jednym z wielu zbiorów powstałych na podstawie modyfikacji zbioru Mandelbrota. Proces generowania przybliżeń zbioru Mandelbar przebiega identycznie jak w przypadku zbioru Mandelbrota. Różnica polega na wprowadzeniu w tym pierwszym operacji sprzężenia liczby zespolonej. Podczas gdy w przypadku zbioru Mandelbrota ciąg liczb zespolonych z0, z1, z2, ..., dla danego punktu p na płaszczyźnie zespolonej zdefiniowany był następująco:
z0 = 0
zn+1 = zn2 + p
To dla zbioru Mandelbar wprowadza się operację sprzężenia zwrotnego:
z0 = 0
zn+1 =
n2 + p
Stąd też bierze się jego nazwa. Do zapisu sprzężenia zwrotnego używamy kreseczki nad liczbą (ang. bar) i stąd też nazwa zbioru Mandelbar. Czasem też, zbiór ten nazywany jest Tricorn (od swojego wyglądu).
Przypomnijmy jeszcze działania na liczbach zespolonych jakie będziemy potrzebować podczas obliczeń. Liczba zespolona z składa się z części rzeczywistej zr oraz części urojonej zi, czyli z = zr + i zi.
Sprzężenie liczby zespolonej definiujemy następująco:
= zr - i zi
czyli polega ono na odwróceniu znaku części urojonej, przy czym ma ono niższy priorytet od pozostałych działań i zapis
n oznacza, że najpierw liczba z będzie podniesiona do n-tej potęgi, a dopiero na tym wyniku zostanie przeprowadzona operacja sprzężenia, czyli odwrócenia znaku części urojonej.
Mnożenie definiujemy następująco:
a * b = (ar*br - ai*bi) + i(ar*bi + ai*br)
Dodawanie definiujemy następująco:
a + b = (ar + br) + i(ai + bi)
Moduł z liczby zespolonej definiujemy następująco:
,
dlatego też w praktyce warunek |z| < 2 zastępuje się równoważną nierównością (zr2 + zi2) < 4. Pozbywamy się tutaj czasochłonnego obliczania pierwiastka kwadratowego.
z0 = 0
zn+1 = zn2 + p
To dla zbioru Mandelbar wprowadza się operację sprzężenia zwrotnego:
z0 = 0
zn+1 =
n2 + pStąd też bierze się jego nazwa. Do zapisu sprzężenia zwrotnego używamy kreseczki nad liczbą (ang. bar) i stąd też nazwa zbioru Mandelbar. Czasem też, zbiór ten nazywany jest Tricorn (od swojego wyglądu).
Przypomnijmy jeszcze działania na liczbach zespolonych jakie będziemy potrzebować podczas obliczeń. Liczba zespolona z składa się z części rzeczywistej zr oraz części urojonej zi, czyli z = zr + i zi.
Sprzężenie liczby zespolonej definiujemy następująco:
= zr - i ziczyli polega ono na odwróceniu znaku części urojonej, przy czym ma ono niższy priorytet od pozostałych działań i zapis
n oznacza, że najpierw liczba z będzie podniesiona do n-tej potęgi, a dopiero na tym wyniku zostanie przeprowadzona operacja sprzężenia, czyli odwrócenia znaku części urojonej.Mnożenie definiujemy następująco:
a * b = (ar*br - ai*bi) + i(ar*bi + ai*br)
Dodawanie definiujemy następująco:
a + b = (ar + br) + i(ai + bi)
Moduł z liczby zespolonej definiujemy następująco:
,dlatego też w praktyce warunek |z| < 2 zastępuje się równoważną nierównością (zr2 + zi2) < 4. Pozbywamy się tutaj czasochłonnego obliczania pierwiastka kwadratowego.
Możliwe jest również generowanie zbiorów Mandelbar wyższych rzędów.
Poniżej znajdują się definicje zbiorów Mandelbar kolejnych rzędów wraz z ich reprezentacją graficzną:
- Mandelbar (Tricorn)
z0 = 0
zn+1 =
n2 + p

- Cubic Mandelbar
z0 = 0
zn+1 =
n3 + p

- Quadratur Mandelbar
z0 = 0
zn+1 =
n4 + p

- Penta Mandelbar
z0 = 0
zn+1 =
n5 + p

- Hexa Mandelbar
z0 = 0
zn+1 =
n6 + p

- Hepta Mandelbar
z0 = 0
zn+1 =
n7 + p

- ...
Przykład w JavaScript:
Zaznaczając obszar uzyskasz jego powiększony obraz. Kliknięcie prawym klawiszem (bądź dotknięcie dwoma palcami na urządzeniach z ekranem dotykowym) spowoduje powtórne pokazanie całego zbioru.
| Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
| Tomasz Lubiński | C# | MS Visual Studio .net | ![]() | ![]() |
![]() ![]() ![]() ![]() / 1 |
| Tomasz Lubiński | C/C++ | Borland Builder 6 | ![]() | ![]() |
![]() ![]() ![]() ![]() / 1 |
| Tomasz Lubiński | Delphi/Pascal | Borland Delphi 5 | ![]() | ![]() |
![]() ![]() ![]() ![]() / 1 |
| Tomasz Lubiński | Java Script | Firefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+ | ![]() | ![]() |
![]() ![]() ![]() ![]() / 0 |
Poprawiony: wtorek, 21 czerwca 2011 19:27



/ 1

