Шрифт:
Интервал:
Закладка:
f(f(2)) = f(2² + 1) = f(5) = 5² + 1 = 26.
Можно проводить итерацию сколько угодно раз. Например, трижды:
f(f(f(2))) = f(f(5)) = f(26) = 26² + 1 = 677.
Когда мы выходим на четвертую итерацию, запись становится громоздкой. Поэтому вместо f(f(f(f(x)))) мы будем записывать f⁴(x), подразумевая, что верхний индекс означает не возведение в степень, а последовательное применение функции. Для положительного целого числа n выражение f n(x) означает:
Итерация логистического отображения
Сейчас мы проитерируем функции вида f(x) = mх(1 – х), где m – некое число. Это семейство функций называется логистическим отображением[209]. Во всех случаях мы будем начинать с числа x = 0,1, итерировать функцию и наблюдать за происходящим. Мы начнем с функции:
f(x) = 2,5x (1 – x).
Начнем с x = 0,1 и на первом шаге посчитаем:
f(0,1) = 2,5 × 0,1 × (1–0,1) = 2,5 × 0,1 × 0,9 = 0,225.
Применим f снова:
f ²(0,1) = f(0,225) = 2,5 × 0,225 × (1–0,225) = 2,5 × 0,225 × 0,775 = 0,4359375.
Прибегнем к помощи компьютера. Программа, итерирующая f, даст такие результаты:
Заметим, что успешное итерирование все больше и больше приближает нас к 0,6. Есть хороший способ продемонстрировать это наглядно. Отметим на графике величины f(0,1), f(f(0,1)), f(f(f(0,1))) и т. д. На оси абсцисс нанесем номера итераций, n. На каждом шаге будем отмечать значение f n(x) («нулевая» итерация – это наше начальное число 0,1). Соединим все точки отрезками. Вот что получится:
Мы видим, что итерации f(x) сходятся к числу 0,6.
А что, собственно, особенного в числе 0,6? Заметим, что
f(0,6) = 2,5 × 0,6 × (1–0,6) = 2,5 × 0,6 × 0,4 = 0,6.
Число 0,6 называют неподвижной точкой функции f, поскольку применение функции к этому числу не меняет его: f(0,6) = 0,6.
Продублируем эксперимент с другой функцией того же семейства; на сей раз возьмем множитель m = 2,8; таким образом, функция приобретает вид f(x) = 2,8 x (1 – x). Как и в предыдущем случае, мы начнем итерирование с x = 0,1. Вот первые 10 значений:
Похоже, итерации выплясывают вокруг 0,64. Продолжим итерировать и построим график:
В пределах первых 10 итераций значения функции слегка колеблются вверх и вниз, но уже на 30-й они выравниваются. На какой величине? Это число между 0 и 1, такое, что f(x) = x. Нам остается решить незамысловатое уравнение:
Итерации f(x) = 2,8 x (1 – x) сходятся к числу 0,642857.
Итерирование логистического отображения f(x) = m x (1 – x) можно рассматривать в качестве простой эволюционирующей системы. Число x показывает состояние системы, а функция f диктует, как система эволюционирует при смещении на один шаг[210]. В двух рассмотренных нами случаях (m = 2,5 и m = 2,8) долгосрочное поведение системы приводит к «равновесию» в неподвижной точке функции.
Мы продолжим исследование итераций логистического отображения в случае m = 3,2. Как и в предыдущих случаях, мы начнем с х = 0,1. Вот первые десять значений:
Что происходит? Итерации не сходятся к одной величине. Значения на четных шагах становятся меньше (это примерно 0,66; 0,64; 0,62; 0,6; 0,57), а на нечетных – растут (примерно 0,72; 0,74; 0,75; 0,77). Значения расходятся, а не сходятся!
Начертим график первых 30 итераций, чтобы изобразить наглядно проведение системы:
Посмотрите! Она не выравнивается к одному числу, а осциллирует[211] между двумя величинами. Доведем вычисления до 50-й итерации. Вот последние строчки таблицы:
Долгосрочное поведение системы – осцилляция между двумя величинами, s = 0,799455… и t = 0,5130445… Эти числа таковы, что f(s) = t, а f(t) = s. Правило осцилляции можно изобразить так:
Какое еще поведение функции мы можем наблюдать, итерируя логистическое отображение? В следующем пункте нашей экспедиции m = 3,52. Посмотрим на график итераций f(x), f²(x), f³(x), …