Треугольник Серпинского — фрактал, один из двумерных аналогов множества Кантора, математическое описание которого опубликовал польский математик Вацлав Серпинский в 1915 годуW. Sierpinski, Sur une courbe dont tout point est un point de ramification.//Comptes rendus hebdomadaires des séances de l’Académie des sciences. — Paris. — Tome 160, Janvier — Juin 1915. — Pp. 302—305. — . Также известен как «салфетка» Серпинского.

На основе треугольника Серпинского могут быть изготовлены многодиапазонные фрактальные антенны.Слюсар В. И. Фрактальные антенны. // Радиоаматор. — 2002. — № 9. — С. 54 −56., Конструктор. — 2002. — № 8. — С. 6 — 8. Вишневский В. М., Ляхов А. И., Портной С. Л., Шахнович И. В. Широкополосные беспроводные сети передачи информации. — М.: Техносфера. — 2005.- C. 498—569

Образования, похожие на треугольник Серпинского, возникают при эволюции многих конечных автоматов, подобных игре ЖизньBilotta, Eleonora; Pantano, Pietro (Summer 2005), «Emergent patterning phenomena in 2D cellular automata», Artificial Life, 11 (3): 339—362, doi:10.1162/1064546054407167, PMID 16053574, S2CID 7842605..

В 2024 году Международная команда исследователей сообщила об открытии белка цитратсинтазы в цианобактерии , который самоорганизуется в треугольник Серпинского, это первый известный молекулярный фрактал.

Построение

Итеративный метод

Середины сторон равностороннего треугольника соединяются отрезками. Получаются 4 новых треугольника. Из исходного треугольника удаляется внутренность срединного треугольника. Получается множество , состоящее из 3 оставшихся треугольников «первого ранга». Поступая точно так же с каждым из треугольников первого ранга, получим множество , состоящее из 9 равносторонних треугольников второго ранга. Продолжая этот процесс бесконечно, получим бесконечную последовательность , пересечение членов которой есть треугольник Серпинского.

Метод хаоса 1. Задаются координаты аттракторов — вершин исходного треугольника . 2. Вероятностное пространство разбивается на 3 равных части, каждая из которых соответствует одному аттрактору. 3. Задаётся некоторая произвольная начальная точка . 4. Начало цикла построения точек, принадлежащих множеству треугольника Серпинского. 1. Генерируется случайное число . 2. Активным аттрактором становится та вершина, на вероятностное подпространство которой выпало сгенерированное число. 3. Строится точка с новыми координатами: , где:  — координаты предыдущей точки ;  — координаты активной точки-аттрактора. 5. Возврат к началу цикла.

Свойства Треугольник Серпинского состоит из 3 одинаковых частей, коэффициент подобия 1/2. Треугольник Серпинского замкнут. Треугольник Серпинского имеет топологическую размерность 1. Треугольник Серпинского обладает самоподобием Треугольник Серпинского имеет промежуточную (то есть нецелую) Хаусдорфову размерность . В частности, треугольник Серпинского имеет нулевую меру Лебега. Если в треугольнике Паскаля все нечётные числа окрасить в чёрный цвет, а чётные — в белый, то образуется треугольник Серпинского.

В искусстве Изображения треугольника Серпинского в 1919 году стали мотивом нескольких графических произведений Георгия Нарбута, в частности эта фигура использована им при оформлении нескольких выпусков журнала «Мистецтво» (1919—1920 гг.). Вариации фигур на основе треугольника Серпинского использованы в интерьере синагоги Бен-Эзра, Каир, Египет Четыре первых итерации фрактальных треугольников Серпинского использовались в орнаментах геометрической мозаики стиля косматеско в средневековых соборах Италии (начиная с XII века)The grammar of ornament. Day and Son, London. — 1856Conversano Elisa, Tedeschini Lalli Laura. Sierpinsky triangles in stone, on medieval floors in Rome.// Aplimat — Journal of Applied Mathematics. Volume 4 (2011), Number 4. — P. 113—122. — Paola Brunori, Paola Magrone, and Laura Tedeschini Lalli. Imperial Porphiry and Golden Leaf: Sierpinski Triangle in a Medieval Roman Cloister.//ICGG 2018 — Proceedings of the 18th International Conference on Geometry and Graphics. — Pp. 595—609. -, арабских и персидских интерьерах.

Реализации

JavaScript (html5) Аппроксимация квадратами

let k = Math.sqrt(3)/2, S = 16, H = 512, W = Math.floor(H/k);

let canvas = document.createElement("canvas"); let ctx = canvas.getContext('2d');

document.body.append(canvas); canvas.width = W; canvas.height = H;

ctx.fillRect(0, 0, W, H);

for(let x = 0; x <= Math.floor(W/2); x++) {

for(let y = 0; y < H; y++) {

let A = y, a = A%S; let B = y/2+x*k, b = B%S; let C = y/2-x*k, c = C%S;

if(a > b && C > 0 && B > 0) {

if ( (B/S) & (C/S) ) ctx.fillStyle='#ff0'; else ctx.fillStyle='#000';

else if(a < b && C > 0 && B > 0) ctx.fillStyle='#0f8'; else ctx.fillStyle='#fff';

ctx.fillRect(Math.floor(W/2)-x, y, 1, 1);

if (x!=0) ctx.fillRect(Math.floor(W/2)+x, y, 1, 1);

Рекурсивный метод

const depth = 7; const basecolor = "black"; const fillcolor = "white";

// ain't iteration a bit nicer via timer? // (calculations become smooth & async)

const timestep = 300; // ms

// define html5 canvas const width = 700; // px

const canv = document.createElement("canvas"); const ctx = canv.getContext("2d");

// don't wish to deal with right triangles, so just re-scale canv style

canv.width = width; canv.height = width;

canv.style.height = width*Math.sqrt(3)/2; canv.style.width = width;

document.body.append(canv);

let triangle = (x, y, w, color=fillcolor, r=false) => {

// take square coordinates and width for simplycity // also (r)otate triangle if needed, V by default

ctx.beginPath(); ctx.moveTo(x + w/2, r? y : width-y); ctx.lineTo(x + w, r? (w + y) : width- (y + w) ); ctx.lineTo(x, r? (w + y) : width- (y + w) );

ctx.fillStyle = color; ctx.fill(); ctx.closePath();

let recstep = (x, y, wi, de) => {

if (de < depth) {

triangle(x+ wi/4, y, wi/2);

// paint the triangle in center of given square // split to three squares pyramide // recursively paint each square of pyramide

setTimeout(() => {

recstep(x, y, wi/2, de+1); recstep(x+wi/2, y, wi/2, de+1); recstep(x + wi/4, y + wi/2, wi/2, de+1);

}, timestep);

triangle(0, 0, width, basecolor, true); recstep(0, 0, width, 0);

Построение на C# Построение на C# в консоли с помощью треугольника Паскаля:

using System;

namespace Serpinski { class Program

static void Main(string[] args)

Console.Write("Power of 2: "); int depth = Convert.ToInt32(Math.Pow(2d, Convert.ToDouble(Console.ReadLine())));

int[][] pascaltriangle = new int[depth][]; for (int i = 0; i < pascaltriangle.Length; i++)

pascaltriangle[i] = new int[depth]; for (int j = 0; j < pascaltriangle[i].Length; j++) pascaltriangle[i][j] = 0; pascaltriangle[i] = 1; pascaltriangle[i][i] = 1;

for (int i = 1; i < pascaltriangle.Length; i++) for (int j = 1; j < pascaltriangle[i].Length; j++) pascaltriangle[i][j] = (pascaltriangle[i - 1][j - 1] + pascaltriangle[i - 1][j]) % 2;

for (int i = 0; i < pascaltriangle.Length; i++)

for (int j = 0; j < pascaltriangle[i].Length; j++) Console.Write(pascaltriangle[i][j] == 1 ? "#" : " "); Console.WriteLine();

Console.Write("Press any key to continue..."); Console.ReadKey();

Галерея

См. также Ковёр Серпинского Снежинка Коха Кривая Гилберта

Примечания

Литература Jones, O. The grammar of ornament. Day and Son, London. — 1856. Абачиев С. К. О треугольнике Паскаля, простых делителях и фрактальных структурах // В мире науки, 1989, № 9.

Ссылки

Если есть свободное время, можете нарисовать треугольник Серпинского⁠⁠.

Категория:Фракталы Категория:Топологические пространства Категория:Виды треугольников