Естественные науки

Теория хаоса. Почему выражение x = 2n если Xn<=1/2 и x = 2Xn-1 если Xn>=1/2 считается непредсказуемым?

Ведь оно выходит на вполне определённый период. Допустим начальное значение Х = 0,3.
Получаем последовательность:
0,3
0,6
0,2
0,4
0,8
0,6
0,2
0,4
0,8
0,6
0,2
0,4
0,8
0,6
Далее считать не имеет смысла, ведь очевидно, что период = 4....
Может я не так считаю??
Ravshan Pardaev
Ravshan Pardaev
10 129
Понятия не имею. Всё дело вот в чём, если я могу перевести число в двоичную систему, то я точно могу сказать чему оно будет равно через n шагов. А я могу это сделать с любым рациональным числом :) (ведь даже если получим бесконечную двоичную запись, она будет циклична, а значит я точно буду знать какой знак будет стоять на каждой конкретной позиции)

for(int i = 0; i < n; i++){
x = x << 1;
if(x>1) x = x-1;
}

Что видно из этого кода? Конечно же, если число изначально было меньше единицы, то после n шагов оно будет умножено на 2^n и взято без целой части (то есть только то, что после запятой). Итак, если начальное число было меньше 1, то я даже без перевода в двоичную систему могу сказать что получится.

Если оно было больше 1 изначально, то в ветку "если" оно уже никогда не попадёт, и после n-ого шага число просто будет умножено на 2^n (и снова нам переводить в двоичную систему не пришлось)

Если же число было ровно единицей, то оно единицей и останется на любом шаге :) Потому не знаю что Ваш препод имел ввиду, но или Вы вырвали фразу из контекста, или же он сказал не то, что хотел сказать...

Я бы предложил и третий вариант, но не думаю что Ваш преподаватель решил самодеятельностью заняться и какую-то глупость придумал. Потому всё же остановимся на первых двух вариантах - Вы явно услышали не то, что преподаватель желал Вам сообщить.

И да, я согласен с Михаилом Портновым, ведь именно на указаном им принципе и строится теория хаоса. Обычно мы привыкли считать что малые изменения исходных данных приводят к малым изменениям результата (и чем меньше первое, тем меньше будет второй). На самом деле оказывается что это не так, и есть такие функции, которые при малых изменениях исходных данных очень значительно влияют на результат (а это как-раз такой случай).

P.S. И если меня не подводит память, это открытие сделал математик-метеоролог чисто случайно. Он просто поставил свою программу на просчёт погоды на месяц вперёд если не ошибаюсь, а потом решил попробовать то же самое только считая погоду для меньших периодов и использовать результат предыдущего шага как входные данные следующего. После получения результата он сильно удивился, ведь система показала совсем разные данные казалось бы для одного и того же просчёта. Как потом выяснилось всё дело было в округлении полученных значений до какого-то там знака после запятой. То есть мизерные изменения входных данных привели к огромным различиям выходных.

И то, что в кино привыкли называть "эффектом бабочки" было введено как-раз этим самым метеорологом, и имело следующий смысл: взмах крыла бабочки на одном конце земного шара может вызвать ураган на другом
(Точный текст к сожалению найти не могу, возможно это он и есть :)) )
Буяр Муратоглу
Буяр Муратоглу
42 958
Лучший ответ
.

Вы неправильно поняли лектора (и привели отдельно взятый пример с коротким зацикливанием).

В общем случае, Вы не сможете предсказать что будет через 50 итераций, если Вы НЕ ЗНАЕТЕ формулу, по которой делаются эти итерации. Не существует никаких математических методов интерполяции, которые могли бы предсказать это.

Возьмите, например, инженерный калькулятор в котором есть генератор случайных чисел. Вы не знаете формулу, по которой делаются там итерации (а она, возможно, такая же, как у Вас на лекции). Вы можете выписать хоть 100, хоть 1000 последовательных значений. Но никакими математическими методами у Вас не получится установить какую-то закономерность, которая позволила бы Вам предсказать следующее число, которое выдаст генератор случайных чисел. Мало того, если провести статистическое исследование выписанной последовательности чисел, то статистические методы покажут, что это чисто случайная последовательность, марковский процесс с равномерным распределением на отрезке от 0 до 1.

Зацикливание генератора случайных чисел в калькуляторе начнется где-нибудь после 10 в очень-очень-очень-очень большой степени. Формула и начальное значение выбираются там так, чтобы если сидеть непрерывно и генерировать эти числа без сна и без обеда, то цикл будет пройден лет за 1000. (А в языках программирования за время большее, чем возраст Вселенной при скорости вычисления современных процессоров.)

.
Василий Муха
Василий Муха
84 448
Хорошо. Чуть-чуть меняем стартовое значение,
x_0=0,31, получаем
x_4 = 0.96
x_24 = 0.96
период уже другой,
меняем значение еще меньше x_0=0.305, период будет 18.
Если взять x_0=0,31 -- третье значение периода получим.

То есть малые изменения начальных данных сильно меняют поведение, в частности период.

А теперь, если учитывать, что при вычислениях с большим количеством знаков после запятой мы получим искажения, то поведение действительно невозможно предсказать. Мы будем перскакивать с одного устойчивого цикла на другой.
Нурбек Рамадин
Нурбек Рамадин
13 864
Ravshan Pardaev Получается, что период зависит только от количества знаков после запятой. И количество итераций при выходе на период может быть разное у разных чисел. А при вычислениях с большим количеством знаков после запятой мы получим искажения, обусловленные только особенностями компьютерной программы.
Но в итоге получаем вполне предсказуемую систему. Не берусь утверждать, что вся теория хаоса ошибочна, возможно только что использование данного примера для иллюстрации не корректно.
x1=1
x2=0

x3=-2

x4=-2

x5=2

x6=6

x7=2

x8=-10

Остальные не встретятся
Ravshan Pardaev x1 = 1
x2 = 1*2 -1=1
.
.
.
Xn=1 как то так)

Похожие вопросы