Sierpinski triangle

advertisement
Sierpinski triangle
From Wikipedia, the free encyclopedia
Jump to: navigation, search
Sierpinski triangle
The Sierpinski triangle, also called the Sierpinski gasket, is a fractal named after
Wacław Sierpiński who described it in 1915.[1] Originally constructed as a curve, this
is one of the basic examples of self-similar sets, i.e. it is a mathematically generated
pattern that can be reproducible at any magnification or reduction.
Contents
[hide]








1 Construction
2 Properties
3 Analogs in higher dimension
4 Self-assembly with DNA
5 Computer program
6 See also
7 References
8 External links
[edit] Construction
An algorithm for obtaining arbitrarily close approximations to the Sierpinski triangle
is as follows:
1. Start with any triangle in a plane (any closed, bounded region in the plane will
actually work). The canonical Sierpinski triangle uses an equilateral triangle
with a base parallel to the horizontal axis (first image).
2. Shrink the triangle by ½, make two copies, and position the three shrunken
triangles so that each triangle touches the two other triangles at a corner
(image 2).
3. Repeat step 2 with each of the smaller triangles (image 3 and so on).
Note that this infinite process is not dependent upon the starting shape being a triangle
- it is just clearer that way. The first few steps starting, for example, from a square
also tend towards a Sierpinski gasket. Michael Barnsley used an image of a fish to
illustrate this in his paper V-variable fractals and superfractals (PDF).
The actual fractal is what would be obtained after an infinite number of iterations.
More formally, one describes it in terms of functions on closed sets of points. If we let
da note the dilation by a factor of ½ about a point a, then the Sierpinski triangle with
corners a, b, and c is the fixed set of the transformation da U db U dc.
This is an attractive fixed set, so that when the operation is applied to any other set
repeatedly, the images converge on the Sierpinski triangle. This is what is happening
with the triangle above, but any other set would suffice.
If one takes a point and applies each of the transformations da, db, and dc to it
randomly, the resulting points will be dense in the Sierpinski triangle, so the
following algorithm will again generate arbitrarily close approximations to it:
Start by labelling p1, p2 and p3 as the corners of the Sierpinski triangle, and a random
point v1. Set vn+1 = ½ ( vn + prn ), where rn is a random number 1, 2 or 3. Draw the
points v1 to v∞. If the first point v1 was a point on the Sierpinski triangle, then all the
points vn lie on the Sierpinski triangle. If the first point v1 to lie within the perimeter
of the triangle is not a point on the Sierpinski triangle, none of the points vn will lie on
the Sierpinski triangle, however they will converge on the triangle. If v1 is outside the
triangle, the only way vn will land on the actual triangle, is if vn is on what would be
part of the triangle, if the triangle was infinitely large.
Or more simply:
1. Take 3 points in a plane, and form a triangle
2. Randomly select any point inside the triangle and move half the distance from
that point to any of the 3 vertex points. Plot the current position.
3. Repeat from step 2.
Note: This method is also called the Chaos game. You can start from any point
outside or inside the triangle, and it would eventually form the Sierpinski Gasket with
a few leftover points. It is interesting to do this with pencil and paper. A brief outline
is formed after placing approximately one hundred points, and detail begins to
appear after a few hundred.
Or using an Iterated function system
An alternative way of computing the Sierpinski triangle uses an Iterated function
system and starts by a point in the origin (x0=0, y0=0) and then the new points are
iteratively computed by randomly applying (with equal probability) one of the
following 3 coordinate transformations (using the so called chaos game):
Sierpinski triangle using IFS
xn+1=0.5 xn
yn+1=0.5 yn ; a half-size copy
when this coordinate transformation is used, the point is drawn in brown in the figure
xn+1=0.5 xn+0.5
yn+1=0.5 yn+0.5 ; a half-size copy shifted right and up
when this coordinate transformation is used, the point is drawn in red
xn+1=0.5 xn+1
yn+1=0.5 yn ; a half-size copy doubled shifted to the right
when this coordinate transformation is used, the point is drawn in blue
Or using an L-system — The Sierpinski triangle drawn using an L-system.
Other means — The Sierpinski triangle also appears in certain cellular automata,
including those relating to Conway's Game of Life. The automaton "12/1" when
applied to a single cell will generate four approximations of the Sierpinksi triangle.
[edit] Properties
The Sierpinski triangle has Hausdorff dimension log(3)/log(2) ≈ 1.585, which follows
from the fact that it is a union of three copies of itself, each scaled by a factor of ½.
If one takes Pascal's triangle with 2n rows and colors the even numbers white, and the
odd numbers black, the result is an approximation to the Sierpinski triangle.
The area of a Sierpinski triangle is zero (in Lebesgue measure). This can be seen from
the infinite iteration, where we remove 25% of the area left at the previous iteration.
[edit] Analogs in higher dimension
The tetrix is the three-dimensional analog of the Sierpinski triangle, formed by
repeatedly shrinking a regular tetrahedron to one half its original height, putting
together four copies of this tetrahedron with corners touching, and then repeating the
process.
A Sierpinski square-based pyramid and its 'inverse'
[edit] Self-assembly with DNA
Researchers in Erik Winfree's lab at the California Institute of Technology have also
constructed self-assembling Sierpinski triangles using DNA tiles (Rothemund et al.
2004).
[edit] Computer program
Computer programs to draw Sierpinski triangles are usually done recursively in
programming languages that permit explicit recursion such as Java.
import java.awt.*;
import java.applet.*;
public class SierpinskiTriangle extends Applet {
private Graphics g;
private int dMin=4;
// limit to recursion in pixels
public void paint(Graphics g) {
this.g = g;
int d = 1024;
// basis (width of the triangle)
int x0 =
50;
// distance from the left
int y0 =
50;
// distance from the top
int h = (int)(d*Math.sqrt(3)/2);
// height
// so: suitable for an equilateral triangle
int xA=x0,
yA=y0+h;
// (bottom-left)
int xB=x0+d,
yB=y0+h;
// (bottom-right)
int xC=x0+d/2, yC=y0;
// equilateral triangle (topcenter)
int[] x = { xA, xB, xC };
int[] y = { yA, yB, yC };
drawSierpinskiTriangle( x, y, d/2 );
}
// start recursion
private void drawSierpinskiTriangle
if (d<=dMin) g.fillPolygon ( x,
recursion
else {
// centers of the sides:
int xMc = (x[0]+x[1])/2,
int xMb = (x[0]+x[2])/2,
int xMa = (x[1]+x[2])/2,
( int[] x, int[] y, int d ) {
y, 3 ); // bottom of the
yMc = (y[0]+y[1])/2;
yMb = (y[0]+y[2])/2;
yMa = (y[1]+y[2])/2;
int[] xNew1 = { x[0], xMc, xMb };
int[] yNew1 = { y[0], yMc, yMb };
drawSierpinskiTriangle ( xNew1, yNew1, d/2 );
//
int[] xNew2 = { x[1], xMc, xMa };
int[] yNew2 = { y[1], yMc, yMa };
drawSierpinskiTriangle ( xNew2, yNew2, d/2 );
//
int[] xNew3 = { x[2], xMb, xMa };
int[] yNew3 = { y[2], yMb, yMa };
drawSierpinskiTriangle ( xNew3, yNew3, d/2 );
//
recursion
recursion
recursion
}
}
}
Another implementation doesn't use recursion and draws the triangle in a rotated
manner, but it is easier to implement.
// Assumes:
// - plot plots a pixel on a surface
// - size is a power of two
// - & is a bitwise and operator
//
for(int x = 0; x < size; x++)
for(int y = 0; y < size; y++)
if(x & y)
plot(x, y, background)
else
plot(x, y, foreground)
[edit] See also




List of fractals by Hausdorff dimension
Sierpinski carpet
Pascal's triangle
Triforce
[edit] References
1. ^ . W. Sierpinski, Sur une courbe dont tout point est un point de ramification,
C. R. Acad. Sci. Paris 160(1915) 302-305
Wikimedia Commons has media related to:
Sierpinski triangle
[edit] External links










Eric W. Weisstein, Sierpinski Sieve at MathWorld.
Paul W. K. Rothemund, Nick Papadakis, and Erik Winfree, Algorithmic SelfAssembly of DNA Sierpinski Triangles, PLoS Biology, volume 2, issue 12,
2004.
Sierpinski Gasket by Trema Removal at cut-the-knot
Sierpinski Gasket and Tower of Hanoi at cut-the-knot
Article explaining Sierpinski's Triangle created with a bitwise XOR (example
program in Macromedia Flash ActionScript)
Article explaining Sierpinski's Triangle created with the Chaos Game
(example program in Macromedia Flash ActionScript)
Sierpinski Triangle and Machu Picchu. Fractal illustration with animation and
sound.
VisualBots - Freeware multi-agent simulator in Microsoft Excel. Sample
programs include Sierpinski Triangle.
IFS Fractal fern and Sierpinski triangle - JAVA applet
Contains a section where the Sierpinski triangle can be seen step by step -Shockwave
Retrieved from "http://en.wikipedia.org/wiki/Sierpinski_triangle"
Categories: Fractals | Factorial and binomial topics | Curves | Topological spaces
Views




Article
Discussion
Edit this page
History
Personal tools

Sign in / create account
Navigation




Main page
Contents
Featured content
Current events

Random article
interaction







About Wikipedia
Community portal
Recent changes
Upload file
Contact us
Make a donation
Help
Search
Go
Search
Toolbox







What links here
Related changes
Upload file
Special pages
Printable version
Permanent link
Cite this article
In other languages











Català
Deutsch
Español
Français
한국어
日本語
Polski
Português
Русский
Svenska
Українська


This page was last modified 02:28, 21 May 2007.
All text is available under the terms of the GNU Free Documentation License.
(See Copyrights for details.)
Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a
US-registered 501(c)(3) tax-deductible nonprofit charity.
Privacy policy



About Wikipedia
Disclaimers
Download