Відкрити головне меню
Sierpinski6.png

Ки́лим Серпі́нського — це плоский фрактал, вперше описаний Вацлавом Серпінським в 1916 році. Килим є одним із прикладів множини Кантора у двох вимірах (у більших вимірах — хмари Кантора). Серпінський продемонстрував, що цей фрактал є універсальною кривою, де будь-який можливий одномірний граф, спроектований на двовимірну площину, гомеоморфний до підмножини серветки Серпінського. Для кривих, які не можуть бути зображені на двовимірній поверхні без самоперетинань, відповідна універсальна крива — губка Менгера, узагальнення для більших вимірів.

ПобудоваРедагувати

Побудова килима Серпінського починається із квадрата. Квадрат розрізається на 9 конгруентних підквадратів, що утворюють сітку три на три, і центральний підквадрат видаляється. Та ж процедура нескінченно рекурсивно застосовується до вісьмох квадратів, що залишилися. На ілюстрації нижче показані перші ітерації процесу побудови.

Килим Серпінського:
           
Фаза 0 Фаза 1 Фаза 2 Фаза 3 Фаза 4 Фаза 5

Броунівський рух на килимі СерпінськогоРедагувати

Тема броуновського руху на килимі Серпінського в останні роки привернула науковий інтерес. Мартін Барлоу й Річард Басс показали, що випадкове блукання на килимі Серпінського поширюється з меншою швидкістю ніж необмежене випадкове блукання на площині. Для останнього випадку середня відстань пропорційна n1/2 після «n» кроків, а випадкове блукання на дискретному килимі Серпінського дає середню відстань, пропорційну n1/β для деякого β > 2. Мартін Барлоу й Річард Басс також показали, що це випадкове блукання задовольняє сильнішим нерівностям великого відхилення (так званим «субгаусовим нерівностям») і задовольняє овальній нерівності Харнака, при цьому не задовольняючи параболічній. Існування цього прикладу було відкритою проблемою багато років.

Комп'ютерна програмаРедагувати

Наступний Java-аплет малює килим Серпінського за допомогою методу, що рекурсивно викликає себе:

 import java.awt.*;
 import java.applet.*;
 
 public class SierpinskiCarpet extends Applet {
     private Graphics g=null;
     private int d0=729; // 3^6
 
     public void init() {
         g=getGraphics();
         resize(d0,d0);
     }
 
     public void paint(Graphics g) {
         //  start recursion:
         drawSierpinskiCarpet ( 0, 0, getWidth(), getHeight() );
     }
 
     private void drawSierpinskiCarpet(int xTL, int yTL, int width, int height) {
         if (width>2 && height>2) {
             int w=width/3, h=height/3;
             g.fillRect ( xTL+w, yTL+h, w, h );
             for (int k=0;k<9;k++) if (k!=4) {
                 int i=k/3, j=k%3;
                 drawSierpinskiCarpet ( xTL+i*w, yTL+j*h, w, h ); // recursion
             }
         }
     }
 }

Див. такожРедагувати

ПосиланняРедагувати