Feigenbaum. Сложное поведение простой модели.

Pixilang по русски
Post Reply
User avatar
iHs
Posts: 27
Joined: Sat Jan 13, 2018 11:02 pm

Feigenbaum. Сложное поведение простой модели.

Post by iHs » Fri Sep 20, 2019 10:45 pm

Эта программа явилась результатом небольшого эксперимента. Что будет, если заставить звучать логистическую последовательность?
Возьмём ряд чисел от 0 до 1, каждое из которых вычисляется из предыдущего по формуле:
Image, где r - константа от 0 до 4.
К чему будет стремиться ряд при разных значениях r?
При r <= 3 последовательность быстро сходится к некоторому числу, это можно даже проверить вручную на калькуляторе.
Но если r становится чуть больше 3, то этот предел внезапно исчезает и вместо него появляется цикл из двух чередующихся значений. Данное явление называется бифуркацией. Если направить вывод последовательности в звуковой тракт, то мы услышим звуковые колебания высокого тона.
При r, превышающем Image, происходит следующая бифуркация, и цикл с периодом 2 переходит в цикл с периодом 4. У исходного тона появляется субгармоника — тон, звучащий на октаву ниже. Стоит заметить, что формирование субгармоники — неочевидное и редко наблюдаемое в реальности физическое явление — легко моделируется простой формулой.
При увеличении r каскад бифуркаций приводит к бесконечному удвоению периода и хаосу, который воспринимается как шум. Но посреди хаоса возникает бесконечное множество "островков" с самыми разнообразными периодами - шум перемежается с регулярными колебаниями.

При запуске программы в левой части окна появляется "живая" бифуркационная диаграмма - по горизонтали отложены значения r, по вертикали - Image. Справа - график соотношения Image и члены ряда. Внизу - слайдер, нажатием на который можно регулировать константу r: грубая настройка - ближе к краям, точная настройка - ближе к центру слайдера. При этом прокручивается диаграмма, обновляется график и меняется характер звука.
Удачного исследования!
Attachments
Feigenbaum.pixi
(4.73 KiB) Downloaded 38 times

fairplay
Posts: 7
Joined: Thu Jul 30, 2015 8:12 pm

Re: Feigenbaum. Сложное поведение простой модели.

Post by fairplay » Tue Oct 15, 2019 11:58 am

Отлично вышло!

Использование логистической модели (да и других хаотических отображений) при генерации звука -- это богатая тема.

Возможно вам будет интересно и сподвигнет на продолжение работ в этом направлении: вот здесь -- https://www.mathematica-journal.com/201 ... ng-sounds/ -- описан механизм генерации "скрежещущих" звуков с использованием той же модели.

Я делал плагины на JSFX для DAW Reaper, которые используют этот метод, звучит так https://soundcloud.com/fairplay/logistic-map-scratching

Примерно, как автор статьи и говорит, подобный звук хорошо использовать в качестве exciter при физическом моделировании звука.

User avatar
iHs
Posts: 27
Joined: Sat Jan 13, 2018 11:02 pm

Re: Feigenbaum. Сложное поведение простой модели.

Post by iHs » Thu Nov 07, 2019 9:49 pm

Да, существует много интересных хаотических моделей для генерации звука и других применений.
Но вот меня озадачил такой вопрос: хаотичны ли они на самом деле.
Как известно, логистическое отображение тесно связано с множеством Мандельброта. Каждый цикл, встречающийся на бифуркационной диаграмме, соответствует маленькой копии (сателлиту) множества Мандельброта. Знакомая картина?



Множество Мандельброта связно. Если внимательно рассмотреть "иглу", расположенную от -2+0i до -1.25+0i, то можно увидеть, что она вся состоит из сателлитов, соединённых тонкими "нитями". Если взять и увеличить любой участок "нити", то мы обнаружим в данной точке ещё меньший сателлит. Чем выше порядок сателлита, тем больше ветвей в бифуркационной диаграмме и сложнее соответствующий цикл.



Получается, что вся "игла" целиком состоит из сателлитов разных размеров, соприкасающихся отдельными точками? То есть почти вся бифуркационная диаграмма состоит из циклов разной сложности, и хаоса в ней практически нет. После каждого каскада бифуркаций следует не хаос, а (пусть очень сложные, но всё-таки) периодические последовательности?
Я пока не могу найти в интернете ответ на данный вопрос, справедливо ли это предположение или нет.
Если в программе задать любое значение r, соответствующее "хаосу", то в полученном шуме всегда можно услышать периодические колебания. Но это не значит, что мы нашли в хаосе период, это просто ошибка округления типа float. При вычислениях в типе double "период" был бы намного больше. По-видимому, чтобы проверить данную гипотезу, понадобится длинная арифметика. Если с ростом точности период не изменится, то он - настоящий.

Post Reply