Эта программа явилась результатом небольшого эксперимента. Что будет, если заставить звучать логистическую последовательность?
Возьмём ряд чисел от 0 до 1, каждое из которых вычисляется из предыдущего по формуле:
, где r - константа от 0 до 4.
К чему будет стремиться ряд при разных значениях r?
При r <= 3 последовательность быстро сходится к некоторому числу, это можно даже проверить вручную на калькуляторе.
Но если r становится чуть больше 3, то этот предел внезапно исчезает и вместо него появляется цикл из двух чередующихся значений. Данное явление называется бифуркацией. Если направить вывод последовательности в звуковой тракт, то мы услышим звуковые колебания высокого тона.
При r, превышающем , происходит следующая бифуркация, и цикл с периодом 2 переходит в цикл с периодом 4. У исходного тона появляется субгармоника — тон, звучащий на октаву ниже. Стоит заметить, что формирование субгармоники — неочевидное и редко наблюдаемое в реальности физическое явление — легко моделируется простой формулой.
При увеличении r каскад бифуркаций приводит к бесконечному удвоению периода и хаосу, который воспринимается как шум. Но посреди хаоса возникает бесконечное множество "островков" с самыми разнообразными периодами - шум перемежается с регулярными колебаниями.
При запуске программы в левой части окна появляется "живая" бифуркационная диаграмма - по горизонтали отложены значения r, по вертикали - . Справа - график соотношения и члены ряда. Внизу - слайдер, нажатием на который можно регулировать константу r: грубая настройка - ближе к краям, точная настройка - ближе к центру слайдера. При этом прокручивается диаграмма, обновляется график и меняется характер звука.
Удачного исследования!
Feigenbaum. Сложное поведение простой модели.
Feigenbaum. Сложное поведение простой модели.
- Attachments
-
- Feigenbaum.pixi
- (4.73 KiB) Downloaded 256 times
Re: Feigenbaum. Сложное поведение простой модели.
Отлично вышло!
Использование логистической модели (да и других хаотических отображений) при генерации звука -- это богатая тема.
Возможно вам будет интересно и сподвигнет на продолжение работ в этом направлении: вот здесь -- https://www.mathematica-journal.com/201 ... ng-sounds/ -- описан механизм генерации "скрежещущих" звуков с использованием той же модели.
Я делал плагины на JSFX для DAW Reaper, которые используют этот метод, звучит так https://soundcloud.com/fairplay/logistic-map-scratching
Примерно, как автор статьи и говорит, подобный звук хорошо использовать в качестве exciter при физическом моделировании звука.
Использование логистической модели (да и других хаотических отображений) при генерации звука -- это богатая тема.
Возможно вам будет интересно и сподвигнет на продолжение работ в этом направлении: вот здесь -- https://www.mathematica-journal.com/201 ... ng-sounds/ -- описан механизм генерации "скрежещущих" звуков с использованием той же модели.
Я делал плагины на JSFX для DAW Reaper, которые используют этот метод, звучит так https://soundcloud.com/fairplay/logistic-map-scratching
Примерно, как автор статьи и говорит, подобный звук хорошо использовать в качестве exciter при физическом моделировании звука.
Re: Feigenbaum. Сложное поведение простой модели.
Да, существует много интересных хаотических моделей для генерации звука и других применений.
Но вот меня озадачил такой вопрос: хаотичны ли они на самом деле.
Как известно, логистическое отображение тесно связано с множеством Мандельброта. Каждый цикл, встречающийся на бифуркационной диаграмме, соответствует маленькой копии (сателлиту) множества Мандельброта. Знакомая картина?
Множество Мандельброта связно. Если внимательно рассмотреть "иглу", расположенную от -2+0i до -1.25+0i, то можно увидеть, что она вся состоит из сателлитов, соединённых тонкими "нитями". Если взять и увеличить любой участок "нити", то мы обнаружим в данной точке ещё меньший сателлит. Чем выше порядок сателлита, тем больше ветвей в бифуркационной диаграмме и сложнее соответствующий цикл.
Получается, что вся "игла" целиком состоит из сателлитов разных размеров, соприкасающихся отдельными точками? То есть почти вся бифуркационная диаграмма состоит из циклов разной сложности, и хаоса в ней практически нет. После каждого каскада бифуркаций следует не хаос, а (пусть очень сложные, но всё-таки) периодические последовательности?
Я пока не могу найти в интернете ответ на данный вопрос, справедливо ли это предположение или нет.
Если в программе задать любое значение r, соответствующее "хаосу", то в полученном шуме всегда можно услышать периодические колебания. Но это не значит, что мы нашли в хаосе период, это просто ошибка округления типа float. При вычислениях в типе double "период" был бы намного больше. По-видимому, чтобы проверить данную гипотезу, понадобится длинная арифметика. Если с ростом точности период не изменится, то он - настоящий.
Но вот меня озадачил такой вопрос: хаотичны ли они на самом деле.
Как известно, логистическое отображение тесно связано с множеством Мандельброта. Каждый цикл, встречающийся на бифуркационной диаграмме, соответствует маленькой копии (сателлиту) множества Мандельброта. Знакомая картина?
Множество Мандельброта связно. Если внимательно рассмотреть "иглу", расположенную от -2+0i до -1.25+0i, то можно увидеть, что она вся состоит из сателлитов, соединённых тонкими "нитями". Если взять и увеличить любой участок "нити", то мы обнаружим в данной точке ещё меньший сателлит. Чем выше порядок сателлита, тем больше ветвей в бифуркационной диаграмме и сложнее соответствующий цикл.
Получается, что вся "игла" целиком состоит из сателлитов разных размеров, соприкасающихся отдельными точками? То есть почти вся бифуркационная диаграмма состоит из циклов разной сложности, и хаоса в ней практически нет. После каждого каскада бифуркаций следует не хаос, а (пусть очень сложные, но всё-таки) периодические последовательности?
Я пока не могу найти в интернете ответ на данный вопрос, справедливо ли это предположение или нет.
Если в программе задать любое значение r, соответствующее "хаосу", то в полученном шуме всегда можно услышать периодические колебания. Но это не значит, что мы нашли в хаосе период, это просто ошибка округления типа float. При вычислениях в типе double "период" был бы намного больше. По-видимому, чтобы проверить данную гипотезу, понадобится длинная арифметика. Если с ростом точности период не изменится, то он - настоящий.