שטיח שרפינסקי הוא פרקטל שיצר המתמטיקאי הפולני ואצלב שרפינסקי בשנת 1916 , שנה לאחר משולש שרפינסקי .
שטיח שרפינסקי 6 צעדים ראשונים
ניתן לבנות את השטיח על ידי חיתוך ריבוע ל-9 תת-ריבועים שווים בגודלם בתבנית של 3X3 תוך סילוק הריבוע המרכזי, והמשך רקורסיבי עד אינסוף. סילוק החלק הפנימי מותיר תמיד קבוצה סגורה והשטיח הוא קבוצת כל החיתוכים. לפי משפט היינה-בורל קבוצה זו היא קבוצה קומפקטית .
טכניקה דומה בשלושה ממדים המבוססת על קוביות יוצרת את ספוג מנגר .
ממד האוסדורף או המימד הפרקטאלי של השטיח שווה ל-
log
-->
8
log
-->
3
=
1.892789
… … -->
{\displaystyle {\frac {\log 8}{\log 3}}=1.892789\ldots }
היות שבכל שלב בונים 8 העתקים בגודל שליש מהצורה הקודמת.
השטיח הוא הכללה אחת של קבוצת קנטור לשני ממדים ועוצמתו היא עוצמת הרצף . ההכללה השנייה היא אבק קנטור . עם זאת במידת לבג שטח השטיח הוא אפס: בתהליך אינסופי שטחו "מתרוקן".
הוכח שהפיזור בהילוך מקרי בשטיח שרפינסקי איטי יותר מאשר בתנועת בראון
[ 1] .
חישוב שטחו של השטיח
יהי x אורך צלע הריבוע ו-y מספר הצעדים, נוסחת שטח השטיח היא:
(
x
3
y
)
2
× × -->
8
y
=
x
2
× × -->
(
8
9
)
y
{\displaystyle \left({\frac {x}{3^{y}}}\right)^{2}\times 8^{y}=x^{2}\times \left({\frac {8}{9}}\right)^{y}}
לדוגמה, ריבוע שאורכו 100 מטר ושטחו 10000 מ"ר, יקטן לאחר שני צעדים ל:
(
100
3
2
)
2
× × -->
8
2
=
100
2
9
2
× × -->
64
=
640000
81
=
7901.2345679
{\displaystyle \left({\frac {100}{3^{2}}}\right)^{2}\times 8^{2}={\frac {100^{2}}{9^{2}}}\times 64={\frac {640000}{81}}=7901.2345679}
ככל שמספר הצעדים יגדל, השטח יקטן.
יישום
בטלפון סלולרי וWi-Fi קיים סוג אנטנה הנקרא פרקטלי, הבנוי על מספר איטרציות של שטיח שרפינסקי. האנטנה מתאימה לטיפול במספר רב של תדרים , היא קלה לייצור וקטנה מאנטנות רגילות בעלות אותם ביצועים.
תהליך
6 צעדים ראשונים ביצירת השטיח
צעד 1
צעד 2
צעד 3
צעד 4
צעד 5
צעד 6
תוכנית מחשב
יישומון בשפת ג'אווה ליצירת שטיח שרפינסקי באמצעות מתודה רקורסיבית:
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 )
{
// Rekursion starten:
drawSierpinskiCarpet ( 0 , 0 , getWidth (), getHeight () );
}
private void drawSierpinskiCarpet ( int xOL , int yOL , int width1 , int height1 )
{
if ( width1 > 2 && height1 > 2 )
{
int b = width1 / 3 ;
int h = height1 / 3 ;
g . fillRect ( xOL + b , yOL + h , b , h );
for ( int k = 0 ; k < 9 ; k ++ ) if ( k != 4 )
{
int i = k / 3 ;
int j = k % 3 ;
drawSierpinskiCarpet ( xOL + i * b , yOL + j * h , b , h ); // Rekursion
}
}
}
}
קישורים חיצוניים
הערות שוליים