Sierpinski carpet
From Wikipedia, the free encyclopedia
The Sierpinski carpet is a plane fractal first described by Wacław Sierpiński in 1916. The carpet is one generalisation of the Cantor set to two dimensions (the other is Cantor dust). Sierpiński demonstrated that this fractal is a universal curve, in that any possible one-dimensional graph, projected onto the two-dimensional plane, is homeomorphic to a subset of the Sierpinski carpet. For curves that cannot be drawn on a 2D surface without self-intersections, the corresponding universal curve is the Menger sponge, a higher-dimensional generalisation.
Contents |
[edit] Construction
The construction of the Sierpinski carpet begins with a square. The square is cut into 9 congruent subsquares in a 3-by-3 grid, and the central subsquare is removed. The same procedure is then applied recursively to the remaining 8 subsquares, ad infinitum. The Hausdorff dimension of the carpet is log 8/log 3 ≈ 1.8928.
The area of the carpet is zero (in standard Lebesgue measure).
[edit] Brownian motion on the Sierpinski carpet
The topic of Brownian motion on the Sierpinski carpet has attracted interest in recent years. Martin Barlow and Richard Bass have shown that a random walk on the Sierpinski carpet diffuses at a slower rate than an unrestricted random walk in the plane. The latter reaches a mean distance proportional to n1/2 after n steps, but the random walk on the discrete Sierpinski carpet reaches only a mean distance proportional to n1/β for some β > 2. They also showed that this random walk satisfies stronger large deviation inequalities (so called "sub-gaussian inequalities") and that it satisfies the elliptic Harnack inequality without satisfying the parabolic one. The existence of such an example was an open problem for many years.
[edit] Computer Program
The following Java Applet draws a Sierpinski carpet by means of a method that recursively calls itself:
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 } } } }