|
Форум Форум
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Ср Фев 20, 2019 1:48 pm Заголовок сообщения: |
|
|
Кто-то меня обвинял в том, что это нихуя не фрактал. Были даже претензии на тему: "это у тебя вообще тут алиасинг"
Короч, берем наш фрактал, бинарную его форму:
Берем верхнюю строку пикселей. Там, фактически, находится вся информация о фрактале и по этой строке можно восстановить паттерн. Берем:
Тут очевидно, что каждый 2*n пиксель - это инвертированный 2*n+1 пиксель. Можно их смело выбросить. Первый пиксель тоже не нужен - он всегда одинаковый:
Получили двоичную последовательность (101001011010010110101101001011010010100... - для числе Фибоначчи). Эта последовательность показывает, с какой стороны прилетел луч... ну или чисто если математическую терминологию использовать - бильярдный шар. Сча по-другому сформулирую. Короч, есть у нас бильярд в прямоугольнике, со сторонами N*M. Скажем в этом прямоугольнике двигается и отражается (по законам оптики) шар, у которого есть некоторое внутреннее состояния. Состояние это меняется на 1, если шар отражается от правой стенки и на 0 - если шар отражается от левой стенки. Когда шар касается верхней стенки - фиксируем положение шара и его состояние. Получим эту последовательность.
Есть, как минимум, 4 способа получить эту же последовательность:
1. Вышеописанный math-бильярд в прямоугольнике.
2. Одномерный бильярд. Ваще злой способ. Для каждого i (= 0, 1, 2, 3, ...), если целая часть от (2*i*N)/M четная - берем остаток от деления (2*i*N)/M. Получившиеся остатки делим на 2. Эти самые числа показывают позиции где шар прилетел слева. Ноликами их заполняем. Оставшиеся позиции - шар прилетел справа и заполняем их единицами. Вот там тупо остатки от деления и хуяк - фрактал.
3. Комбинаторный способ. Пока разобрался только, как эту последовательность строить для чисел Фибоначчи. Берем двоичную последовательность для чисел F(n) и F(n-1). Берем в этой последовательности последние (F(n-1))/2 бит (с учетом четности/нечетности F(n) захватываем последний бит или не захватываем). Переставляем биты в обратном порядке. Инвертируем биты. Дописываем к последовательности. Получили последовательность для чисел F(n+1) и F(n). Можно, фактически, с одного бита восстановить всю последовательность для достаточно больших чисел Фибоначчи.
4. Ну и тригонометрический способ. Это, бля, вообще аxуй. Те же деления по модулю и остатки, только в другой интерпретации. Есть окружность, с радиусом =1. Делим окружность на N*2 частей (рисуем точки на окружности). Далее, двигаясь по окружности, отмечаем каждую M*2*i точку (для i=1, 2, 3, ...). Если синус этой точки меньше нуля - отмечаем 1, если больше - отмечаем 0. Где отмечаем? На оси x, чисто координату через косинус. Единички и нолики будут чередоваться с той же последовательностью (101001011010010110101101001011010010100... - для числе Фибоначчи). Вот тут для примера N=89 и M=55 (внизу картинки выровнял эти точки через арккосинус):
Охуенность такого способа в том, что через тригонометрию можно попробовать получить двоичную последовательность для бильярда N х 2*Pi (иррациональное число, мать его еб) и через эту последовательность восстановить паттерн. Правда задача не совсем тривиальная. Для рациональных N и M получаем конечную двоичную последовательность. Если же N и M несоизмеримы - последовательность получается бесконечной. Сложность же состоит в том, что последовательность заполняется не по порядку, а хаотично. Но тут есть один очень любопытный момент. Есть еще пятый способ получить двоичную последовательность - конкретно для чисел Фибоначчи, существует способ заполнить эту последовательность по порядку.
Чисто случайно заметил, когда программировал одномерный бильярд. Мы там брали (2*i*N)/M, проверяли его на четность. Если четное - берем остаток от деления (2*i*N)/M. И вот тут у чисел Фибоначчи проявляется интересное свойство. Для этих чисел не надо брать остаток от деления. Бля. Берем (2*i*N)/M, если четное - записываем 0, если не четное - 1. Пример:
1*(2*55)/89=1.23595505618, целая часть - нечетная.
2*(2*55)/89=2.47191011236, целая часть - четная.
3*(2*55)/89=3.70786516854, целая часть - нечетная.
4*(2*55)/89=4.94382022472, целая часть - четная.
5*(2*55)/89=6.1797752809, целая часть - четная.
6*(2*55)/89=7.41573033708, целая часть - нечетная.
...
55/89 - примерно равно 1/Phi (Phi - золотое сечение). Чем больше числа Фибоначчи - тем точнее это равенство. Формулу (2*i*N)/M можно переписать как i*2/Phi. Отбрасываем остаток, проверяем четность целой части для каждого i. Получаем фрактальную двоичную последовательность... заполненную по порядку.
Сейчас покажу, как это выглядит геометрически, на бильярде в прямоугольнике со сторонами равными числам Фибоначчи. Для примера возьмем два числа 21 и 13. Зафиксируем, с какой стороны прилетел шар и номер отражения от верхней стенки (первое отражение, второе и т.д.):
А терь, черная магия наxуй! Расставим эти числа по порядку:
Такое свойство нашел пока только у чисел Фибоначчи.
Ну и возвращаясь к фрактальности этой самой двоичной последовательности. Опять же, для примера возьмем два достаточно больших числа Фибоначчи. F(29) и F(28). Заебошим двоичную последовательность (через остатки или через четность целой части - результат одинаковый):
Далее рисуем отрезок. Каждый следующий отрезок - поворот предыдущего отрезка на 60° - если бит в последовательности = 1 или на -60° - если бит = 0. (Этот способ называется Turtle graphics):
Пробежались по всей последовательности... Бле, и кто теперь скажет, что это не фрактал:
Если сильно заморочиться - можно и Хаусдорфову размерность тут насчитать (только я че-т дико туплю на эту тему).
Можно взять два других числа Фибоначчи, которые не стоят рядом. Например F(29)=514229 и F(26)=121393. Тоже построили последовательность. Далее через Turtle graphics, но уже с углами не 60°, а 90°:
Тоже нихуя не фрактал, ага
Ну и чисто скриптец, чтобы повертеть последовательности с помощью Turtle graphics http://xcont.com/turtle/
Полноценную, более подробную статеечку чуть попожже выкачу на хабру. |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Ср Фев 20, 2019 6:30 pm Заголовок сообщения: |
|
|
Admin писал(а): | Такое свойство нашел пока только у чисел Фибоначчи. |
А че там его искать-то.
Вот тут на графике все остальные числа, для которых это свойство работает, отмечены белыми точками:
|
|
Вернуться к началу |
|
|
Slav Мастер-Флудер I цитировать
Репутация: +31
Зарегистрирован: 06.06.2006 Сообщения: 17227 Откуда: КиевЪ Награды: Нет
|
Добавлено: Ср Фев 20, 2019 6:44 pm Заголовок сообщения: |
|
|
Чем ты рисуешь все это? |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Ср Фев 20, 2019 8:42 pm Заголовок сообщения: |
|
|
Slav писал(а): | Чем ты рисуешь все это? |
Javascript-ом. Ну а там, где зеленые клетки - Paint-ом ХР-шным.
Admin писал(а): | 55/89 - примерно равно 1/Phi (Phi - золотое сечение). Чем больше числа Фибоначчи - тем точнее это равенство. Формулу (2*i*N)/M можно переписать как i*2/Phi. Отбрасываем остаток, проверяем четность целой части для каждого i. Получаем фрактальную двоичную последовательность... заполненную по порядку. |
Пользуясь свойствами числа Phi, формулу можно переписать, как i*2/Phi=i*sqrt(5)-i;
Проверяем:
Код: | var array=[];
for(var i=0;i<100;i++){
array[i]=Math.floor(i*Math.sqrt(5)-i)%2;
}
console.log(array.join('')); |
На выходе:
Код: | 0101001011010010110101101001011010010100101101001011010110100101101001010010110100101101001010010110 |
Последовательность совпала.
Вместо корня из 5 можно использовать, скажем, корень из трех. Получаем последовательность:
Код: | 0010010110100100101101001011011010010110100100101101001001011010010110110100101101001001011010010110... |
Тоже эту последовательность туда в Turtle пихаем.
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Ср Фев 20, 2019 8:57 pm Заголовок сообщения: |
|
|
Корень из двух. Углы 60 и 180:
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Ср Фев 20, 2019 9:19 pm Заголовок сообщения: |
|
|
Admin писал(а): | i*sqrt(5)-i |
А надо ли нам это i отнимать, чтобы последовательность была фрактальной? А не надо.
Берем тупо вот эту штучку: √2, умножаем ее на i.
Для каждого i=0, 1, 2, 3, ... берем целую часть от i*√2. Если целая часть нечетная - записываем 1, если четная - 0.
Получаем последовательность:
Код: | 01001101100100110010011011001101100100110110011011001001100100110110010011001001101100110110010011001... |
Если визуализировать эту последовательность с помощью Turtle graphics - видно, что последовательность фрактальная.
Углы 90 и -90
60 и -60
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пт Фев 22, 2019 5:00 pm Заголовок сообщения: |
|
|
Ух бля, чистый хаос:
|
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пт Фев 22, 2019 5:04 pm Заголовок сообщения: |
|
|
Та же хуита, только не через квадратный корень, а через логарифм:
|
|
Вернуться к началу |
|
|
123
цитировать
|
Добавлено: Сб Фев 23, 2019 9:04 am Заголовок сообщения: |
|
|
маргаритки получаются... а если штук 10 углов сделать? или 360 углов углов? |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Сб Фев 23, 2019 3:16 pm Заголовок сообщения: |
|
|
Их потом не подобрать, чтобы четкий паттерн получился. |
|
Вернуться к началу |
|
|
matroskin Мастер-Флудер I цитировать
Репутация: +10/–3
Зарегистрирован: 05.11.2008 Сообщения: 2756 Откуда: Бандерштат Награды: Нет
|
Добавлено: Сб Фев 23, 2019 7:43 pm Заголовок сообщения: |
|
|
_________________ Ось чому, в лихі години, ми затяті й вперті, бо для вільної людини рабство гірше смерті. (Т.Г. Шевченко) |
|
Вернуться к началу |
|
|
123
цитировать
|
Добавлено: Вс Фев 24, 2019 9:01 am Заголовок сообщения: |
|
|
а если автоматически сделать, а потом через нейронку прогнать - там где что-то получается оставить? а потом найти общее - и проникнуть в тайну мироздания! |
|
Вернуться к началу |
|
|
123
цитировать
|
Добавлено: Вс Фев 24, 2019 9:04 am Заголовок сообщения: |
|
|
и кстати не хаос, вон там полосы, и слева кудряшки, если б был хаос - были бы просто пиксели черные и белые равномерно, хотя я не специалист |
|
Вернуться к началу |
|
|
Rasty Crackpot цитировать
Репутация: +89/–10
Зарегистрирован: 23.05.2006 Сообщения: 24386
Награды: Нет
|
Добавлено: Пт Мар 08, 2019 12:06 am Заголовок сообщения: |
|
|
Admin писал(а): | Полноценную, более подробную статеечку чуть попожже выкачу на хабру. |
Выкатил статью на хабру: https://habr.com/post/441516/ |
|
Вернуться к началу |
|
|
. ящер-гриль цитировать
Репутация: +262/–45
Зарегистрирован: 21.06.2006 Сообщения: 53983 Откуда: град обреченный Награды: Нет
|
Добавлено: Пт Мар 08, 2019 1:03 pm Заголовок сообщения: |
|
|
Бля, я никогда эпилепсией не страдал, но последние картинки натурально выжигают глаза _________________ я ізвіняюсь, але шо це за криса у нас у менеджерах сайту? |
|
Вернуться к началу |
|
|
|
|
Вы можете начинать темы Вы можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group Русская поддержка phpBB
|