Треугольник Серпинского представляет из себя множество точек плоскости, построенное следующим образом:
Этим фактом и воспользуемся. Только в Excel удобней использовать не классический (построчный) вид треугольника Паскаля, а такой:
Здесь биномиальные коэффициенты выписаны по диагонали, в первой заполненной строке и первом заполненном столбце единицы, а в остальных сумма вехнего и левого элемента.
Перейдем к построению. Для нас достаточно выписывать не коэффициенты, а только их четность.
Для начала сделаем размер ячеек в Excel, к примеру 7 на 7 пикселей.
Станем в ячейку B2, затем выделим область B2:DY129 - для этого нажимаем Ctrl + G и в поле ссылка пишем B2:DY129.
Теперь в строке формул пишем =ЕСЛИ(ИЛИ(СТРОКА()=2;СТОЛБЕЦ()=2);1;ОСТАТ(A2+B1;2))
и нажимаем Ctrl + Enter, чтобы заполнить подобной формулой всю выделенную область.
Заходим Меню - Условное форматирование и для значения 1 указываем цвет ячейки.
В итоге получаем:
Следует отметить, что треугольник Серпинского получается при некоторой разновидности случайного блуждания на плоскости. А именно:
- Берем обычный треугольник.
- Вырезаем из него треугольник, вершины которого лежат на серединах сторон исходного. В результате на плоскости получаем три треугольника, площадь каждого из которых в четыре раза меньше площади исходного.
- С полученными треугольниками проделываем предыдущие манипуляции.
Выглядит процесс так:
- Интересно, что если в треугольнике Паскаля все нечетные числа окрасить в один цвет, а четные в другой, то образуется треугольник Серпинского.
Этим фактом и воспользуемся. Только в Excel удобней использовать не классический (построчный) вид треугольника Паскаля, а такой:
Здесь биномиальные коэффициенты выписаны по диагонали, в первой заполненной строке и первом заполненном столбце единицы, а в остальных сумма вехнего и левого элемента.
Перейдем к построению. Для нас достаточно выписывать не коэффициенты, а только их четность.
Для начала сделаем размер ячеек в Excel, к примеру 7 на 7 пикселей.
Станем в ячейку B2, затем выделим область B2:DY129 - для этого нажимаем Ctrl + G и в поле ссылка пишем B2:DY129.
Теперь в строке формул пишем =ЕСЛИ(ИЛИ(СТРОКА()=2;СТОЛБЕЦ()=2);1;ОСТАТ(A2+B1;2))
и нажимаем Ctrl + Enter, чтобы заполнить подобной формулой всю выделенную область.
Заходим Меню - Условное форматирование и для значения 1 указываем цвет ячейки.
В итоге получаем:
Следует отметить, что треугольник Серпинского получается при некоторой разновидности случайного блуждания на плоскости. А именно:
- Зафиксируем на плоскости 3 вершины треугольника и возьмем еще одну точку.
- Первую точку получим как середину отрезка между случайно выбранной вершиной и точкой из п.1.
- Вторую точку получим как середину отрезка между случайно выбранной вершиной и первой точкой.
- ...
- Повторяем процесс много раз.
Можно ипользовать такой макрос:
Public Sub Макрос()
Dim arRange(1 To 3) As Range
Dim tekRow As Integer
Dim tekColumn As Integer
Dim i As Integer
Dim iT As Integer
tekRow = Int(1000 * Rnd) + 1
tekColumn = Int(200 * Rnd) + 1
Set arRange(1) = Cells(1, 1)
Set arRange(2) = Cells(50, 250)
Set arRange(3) = Cells(200, 20)
Cells.Clear
For i = 1 To 20000
iT = (Int(1000 * Rnd) Mod 3) + 1
tekRow = Int((tekRow + arRange(iT).Row) / 2)
tekColumn = Int((tekColumn + arRange(iT).Column) / 2)
Cells(tekRow, tekColumn).Interior.ColorIndex = 5
Next
End Sub
Dim arRange(1 To 3) As Range
Dim tekRow As Integer
Dim tekColumn As Integer
Dim i As Integer
Dim iT As Integer
tekRow = Int(1000 * Rnd) + 1
tekColumn = Int(200 * Rnd) + 1
Set arRange(1) = Cells(1, 1)
Set arRange(2) = Cells(50, 250)
Set arRange(3) = Cells(200, 20)
Cells.Clear
For i = 1 To 20000
iT = (Int(1000 * Rnd) Mod 3) + 1
tekRow = Int((tekRow + arRange(iT).Row) / 2)
tekColumn = Int((tekColumn + arRange(iT).Column) / 2)
Cells(tekRow, tekColumn).Interior.ColorIndex = 5
Next
End Sub
Подробнее об этом и некоторых других свойствах можно прочитать в статье "Треугольник Серпинского".
Комментариев нет:
Отправить комментарий