Таким образом, мы задали начальный член последовательности XQ = 0,5. Теперь положим, г = 3,83, и вычислим первые пятьдесят членов последовательности.
t4=Table[х[3.83][n],{n,1,50}]
{0.9575/0.155857,0.503896,0.957442,0.156061,0.504433,0.957425,0.156121
,0.504592,0.957419,0.15614,0.504642,0.957417,0.156146,0.504658,0.95741 7 . 0 . 156148.0.504664.0.957417.0.156149.0.504666.0.957417.0.156149.0.504 6 6 6 . 0 . 957417.0.156149.0.504666.0.957417.0.156149.0.504666.0.957417.0.1 56149.0. 504666.0.957417.0.156149.0.504666.0.957417.0.156149.0.504666.0
.957417,0.156149,0.504666,0.957417,0.156149,0.504666,0.957417,0.156149
,0.504666,0.957417,0.156149}
Вот как все это выглядит на графике.
ListPlot[t4,PlotJoined->True];
Вот теперь действительно есть чему удивиться! Численность популяции оказалась периодической функцией.
Конечно, здесь проведены вычисления только для г= 3,83, а нам нужно провести вычисления для разных г. Давайте проведем их для 250 значений г, равномерно рас пределенных между г = 2,8 и г = 4,0.
tl=Table [ {г, х [г ] [п] |
}, |
{ г, 2 . 8 , 4 , 1 . 2 / 2 4 9}, {п, 10 1 , 3 0 0 } |
] ; |
|
Здесь для каждого |
из |
250 значений г строится список |
х„ для п = 101, |
300. |
Вот что получается (конец опущен). |
|
|
{1(2.8,0.642857},{2.8,0.642857},{2.8,0.642857},{2.8,0.642857},{2.8,
0.642857},{2.8,0.642857},{2.8,0.642857},{2.8,0.642857},{2.8,0.642857}, 12.8,0.642857}, {2.8,0.642857},{2.8,0.642857},{2.8,0.642857},{2.8, 0.642857},{2.8,0.642857},{2.8,0.642857},{2.8,0.642857},{2.8,0.642857},
Чтобы построить график, этот список нужно сделать плоским:
toshow=Flatten [11,1] ;
Теперь список будет иметь вид (конец опущен)
1(2.8,0.642857}, {2.8,0.642857}, {2.8,0.642857}, {2.8,0.642857}, {2.8,0.64 2857},{2.8,0.642857}, {2.8,0.642857}, {2.8,0.642857},
ймы можем построить график, наглядно демонстрирующий поведение последова
Iтельности {хп} при различных значениях параметра г в отображении хл+1 = гхп( \- х „ ) .
ListPlot[toshow,AxesLabel->{"r", "x"}];
x
2.8 |
3.2 |
3.4 |
3.6 |
3.8 |
4 |
|
Из графика видно, насколько сложно зависит поведение популяции от г. |
Еще раз обратим внимание на простенькую формулу хп+1 = гхп( \ —хп). |
При неболь |
ших г (0<К1) х п стремится к |
нулю |
независимо |
от выбора XQ. Судя |
по формуле |
хп+1 = гх„(\—х п), вид, численность которого вначале равна х^, выжить не может, сколь ко бы животных ни было вначале. Поведение последовательности в этом и в других случаях удобно представлять графически. Нарисуем кривую у=Л *) при заданном
значении г и прямую у = |
х. Отложим х, по оси абсцисс, проведем вертикаль до пере |
сечения с кривой у — j{x ) |
(точка А), а затем из точки пересечения горизонталь до пе |
ресечения с линией у = х |
(точка В). Теперь вновь проведем вертикаль до пересечения |
с кривой у = Лх), что даст нам точку С с координатой х2. Тогда х2 = А * \)- Взяв точкух2 за начальную и повторив все те же операции, получим х3, затем х4 и т.д.
х1=0.4; A={xl,x2=f[xl,1] }
{0.4,0.24}
B={x2,x3=f[х2,1]}
{0.24,0.1824} С={хЗ,x4=f[хЗ,1] } {0.1824,0.14913} х1=0.4; A={xl,x2=f[xl,1]};
В={х2,x3=f[х2,1]}; С={хЗ,x4=f[хЗ,1] };
p3=Graphics[Line[{{xl,0},А,{х2,х2},В,{хЗ,хЗ},С}]]; p2=Plot[{х,f [х,1]}, {х, 0,1} ];
pl=ListPlot[{А,В,С},PlotStyle->PointSize[0.02],PlotRange->{0,1}];
Теперь рисуем график, чтобы представить поведение последовательности х„ при
Из рисунка видно, что х„-»0 при о.
Из формулы хя+, = гхп( \ - х п) следует, что функция Л*) переводит отрезок [0, 1] в отрезок‘[0, г /4]. Если г< 4, то все значения хя лежат на отрезке [0, 1] при условии, что 0<х<1. Так что формула хя+, = /хя(1—хя) задает отображение отрезка [0, 1] в себя.
Пусть теперь г немного больше 1, например г = 2.
х=0.01;
plist={ {0, х} };
D o [ { y = f [ х / г ] , plist=Append[plist,{х,х}], plist=Append[plist,{хгу}]f x=y},{10}];
p2=Plot [{x, f [x, r] }, {x, 0 , 1} ]; p3=Graphics[Line[plist]]; Show[p2,p3] ;
Видим, что при этом значении г последовательность {*„} ведет себя по-другому: хп Iстремится к постоянному, отличному от нуля, значению х *при л-><». В применении к исходной биологической задаче это означает, что численность такого вида по проше ствии нескольких лет стабилизируется и перестанет меняться со временем.
Значение х может быть найдено из уравнения х = f i x ) .
Все точки, удовлетворяющие этому уравнению, являются неподвижными точками Функции/, так как если х, = х\ то и х2 = х\ хл = х* при любом п.
При К1 квадратное уравнение х=/х(1~х) имеет один неотрицательный корень
х==0. При r>1 неотрицательных корня два: х |
= 0 их* = (/—1)/г. При г = 1 происходит |
За гранью простого |
373 |
бифуркация: неподвижная точка х = 0 теряет устойчивость, а вновь появившаяся точка становится устойчивой.
Можно довольно просто определить, будет ли устойчивой неподвижная точка х отображения J{x). Пусть хп = х + Дхл, где Ахп — малое число. Если точка устойчива, то с ростом п величина |Дх„| должна уменьшаться. Перепишем формулу хл+1 =У(дсл, г) в
виде х + Дхл+1 = f ix + Дх„) = f i x )+ d^ jX- - A x n +о(Ах„). ах
Если в последнем равенстве опустить член о(Дхл), то полученное приближенное равенство будет выполняться тем точнее, чем меньше Дхл (мы пренебрегли членами, пропорциональными (Дхл)2, (Дхл)3 и т.д.). Поскольку х = Л**)» то
Дхп+| = |
) Ах„ +о(Дх„). |
|
|
ах |
|
И для того чтобы Дхл+1->0 при |
должно выполняться неравенство d f ( x ) |
< 1. |
|
dx |
|
Это и есть условие устойчивости точки х \ Будем дальше увеличивать параметр г. Поведение системы снова изменится: в по
следовательности {*„}, начиная с достаточно больших л, будут чередоваться числа, близкие к некоторым двум числам а х и а2. (Точнее говоря, последовательность устрое на так, что *2r»+i->Яц * 2 п+\ ~ > а 2 ПРИл->°°-) Эти числа связаны соотношениями а х = У(я2),
а2 = A a i)- |
Иными словами, в этом случае отображение хл+1 |
= гх„(\—хп) имеет устойчи |
вый цикл |
с периодом 2. Обозначим этот цикл S 2. Наличие |
цикла 5 2 в нашей модели |
означает, что численность популяции будет меняться с периодом в 2 года.
Выясним, как выглядят циклы на графике. Для этого определим программу cobwebPlot.
cobwebPlot [f_, у__,у0_, n_, а_, b_, opts___]:=Module [{pi, р2, х=уО}, pl=Plot[{у, f},{у7a,b},DisplayFunction->Identity]; p2=Graphics[{Line[Prepend[Flatten[Table[{{x,x=f/.y->x},{x, x}},
{n}],1],{yO,0}]]}]; Show[pi,p2, DisplayFunction->$DisplayFunction, opts]]
Сначала протестируем эту программу.
cobwebPlot[-0.8 z+0.2,z,0.6,20,-0.4,0.7, PlotRange->{-0.35,0.5}];
Теперь нарисуем картинку для случая г= 1.
r=i; cobwebPlot[r*y*(1-y)fy,0.6,20,-0.4f0.7,PlotRange->{-0.35,0.6}]
Теперь нарисуем картинку для случая г = 2.
г=2;
cobwebPlot [г*у*(1-у),у,0.1,20,-0.4,0.7,PlotRange->{-0.35,0.6}]
Наконец, выясним, как выглядит двойной цикл (цикл с периодом 2).
г=3.3;
cobwebPlot [г*у* (1-у) ,у, 0.479427,20,-0.4,1, PlotRange->{ {-0.35,1}., {-0.35,1}}];
Переход от неподвижной точки, которую можно считать циклом S 1, к циклу S1 произошел в результате бифуркации, которая получила название бифуркации удвоения периода. Точка х при этом не исчезла и осталась неподвижной, однако величина
d f ( x ) стала больше 1. dx
При дальнейшем увеличении г поведение последовательности {*„} опять изменяет
ся. Возникает цикл S A: х4п-* а х, x4/J+1-»tf2>х4 П+2 -* аз> х4 п+з~ ^ а 4 ПРИл->°°, причем а2 = Лах\
аз = Л ^ 2)у o4 = J { a 3), а х = /(д4). Численность популяции начинает колебаться с перио дом в 4 года.
г=3.52; cobwebPlot[г*у*(1-у),у,0.512,20,-0.4,1,
PlotRange->{{-0.35,1},{-0.35,1}}];
Но и это еще не все. Приведем еще несколько примеров поведения наших после довательностей.
Block[{$DisplayFunction=Identity}, pl=cobwebPlot[1.5 у(1-у),у, 0.05,20, 0, 0.4]; p2=cobwebPlot[3.3 у(1-у),у,0.03,20,0,0.9]; p3=cobwebPlot[3.52 у(1-у),у,0.08,30,0,0.95]; p4=cobwebPlot[3.7'40 у(1-у),у,0.02'40,40,0,1];] Show[GraphicsArray[{{pi,р2},{рЗ,р4}}]];
Последовательно увеличивая значение параметра, мы увидим циклы S8, S 16, S n и
т.д. При этом каждый раз цикл S 2' теряет устойчивость, и устойчивым становится
цикл S 2P X Наконец, при некотором значении г (его иногда обозначают rj) формула хп+1 = гхп( \ —хп) дает уже непериодическую последовательность {*„}.
Полученная нами картина оказалась очень интересной. Во-первых, в поразительно простой модели хп+{ = гхп( \ —хп) заложено очень сложное поведение. Во-вторых, в ней удается проследить большое количество бифуркаций, приводящих к усложнению ре шения. Сделать это в более сложных моделях гораздо труднее. Как это ни удивитель но, но пока встречались только циклы, период которых равен степени 2.
Чтобы понять, чем это вызвано, и изучить поведение модели более подробно, на ряду с функцией fix ) удобно рассмотреть отображение ДДх)), обозначаемое далее через f \x ), и вообще положитьf n+l(x) = М п(х)), считая, конечно, чтоf ](x) = f i x ) -
Построим график/2(х).
Вот нужные нам определения.
f[x_,r_] :=г*х* (1-х) ;
ff[х_, r_, n j :=Module [{t=x},Do [{t=f [x, r] ,x=t}, {n} ];t]
Сначала рассмотрим случай устойчивой неподвижной точки. Вот что получим для
случая г = 3 .
cobwebPlot [f f [у, r= 3 , 2] , y f 0, 20, - 0 . 4 , 1 ,
PlotRange->{{-0 i35,1},{-0.35,1}}];
Теперь рассмотрим случай устойчивого цикла S 2.
cobwebPlot[ff[у, r=l+Sqrt[5], 2] ,у,0,20,-0.4,1, PlotRange->{{-0.35,1}, {-0.35,1}}];
График функции / 2(х) пересекается с прямой у = х во всех неподвижных точках
отображения / (ведь |
для |
любой неподвижной точки х отображения / имеем |
f \ x ) = ААХ )) = А Х ) = х*), |
а также в точках, принадлежащих циклам S 2 |
(потому что |
а2 = А<*\) = ЛЛ^2)) и |
= А<*2) = ЛА<*\)))- Увеличивая параметр г, мы |
растягиваем |
функцию Ах) вдоль оси у. |
И если при некотором значении г линии у = х и у = Дх) |
пересекаются в одной точке, то с увеличением г могут появиться еще две точки пере сечения. Они-то и будут определять цикл S 2.
Таким образом, переход от S x к S 2 в отображении Ах)обусловлен тем, что в ото
бражении f 2(x) одна из неподвижных точек теряет устойчивость и в ее окрестности появляются две новые устойчивые неподвижные точки. Здесь вновь происходит би фуркация. Рассматривая функции / 4(х), /®(х) и так далее, можно посмотреть, как про исходят следующие удвоения.
cobwebPlot[ff[у,г=3.52,4],у,0,20,-0.4,1, PlotRange->{{-0.35,1},{-0.35,1}}];
cobwebPlot[ff[у,r=3.6,8],у,0,20,-0.4,1,' PlotRange->{{-0.35,1},{-0.35,1}}];
На примере модели хп+] = гхп( \ - х п) можно понять не только качественные, но и удивительные количественные закономерности. Чтобы проследить за ними, построим график х(г): по оси х будем откладывать х ъ ..., лежащие на устойчивом цикле, по оси г — значения параметра. Циклу S 2 будут соответствовать две точки на одной вер тикали, циклу S 4— четыре и т.д. Тогда получим ранее приведенный график, отра жающий усложнение устойчивых циклов в отображении х„+1 = гх п( \ —хп), происходя щее в результате бифуркаций удвоения периода.
Обозначим через |
Я2, Яь |
те значения параметра г, в которых происходили уд |
воения, а через /■„ гъ |
г3, ... — значения параметра, при которых х = 1/2 является эле |
ментом цикла S 2, S 4, S 8 и т. д. Введем также величины d u d2i ..., d„, .., равные рас
стоянию между х = 1/2 и ближайшим к нему элементом цикла S r при г = /*„. Расче тыпоказали, что числа Rn и гп при больших п ведут себя как геометрическая прогрес
сия со знаменателем 8 = 4,6692016... Другими словами, *4 1 К |
8 и отношение |
^л+2“ К * |
|
djdn+l также имеет предел, равный некоторому числу а, причем а = 2,5029078...
Что будет, если вместо функции хп+1 = гх п( \- х „ ) взять любую другую симметрич ную функцию, которая имеет на отрезке [0, 1] один максимум и около вершины близка к квадратичной параболе. Пусть в ней также происходит бесконечная последо вательность бифуркаций удвоения при изменении некоторого параметра. Оказалось, что в любой такой модели числа а и 8 будут одними и теми же! Более того, независи
мо от вида функции предел Н т(-а)и/ 2"[(д:-0,5)/(—а)и,г ] существует и будет одной и
х -* о о
той же универсальной функцией, обозначаемой часто через & (х).
Эти удивительные закономерности были обнаружены и поняты американским ма тематиком М. Фейгенбаумом в 1978 году. В силу универсальности чисел а и 8 и функ ции &(*), а также других функций такого типа эту теорию называют теорией универ сальности.
Что же означают эти результаты?
В природе можно выделить два совершенно различных на первый взгляд типа яв лений. Одни — регулярные и упорядоченные. Это большинство процессов, исполь зуемых в технике и технологии, процессы, в которых возникают структуры. Как пра вило, ход таких процессов можно предсказывать, зная управляющие ими законы.
Другие процессы — случайные, хаотические. К ним относится турбулентное Движение жидкости, шумы в различных электронных системах и т.д. Они требуют Другого, статистического описания, которое позволяет получить некоторые усред ненные характеристики процессов. Такие явления также очень важны, но использу ются гораздо реже из-за их сложности и недостаточной изученности. В одних случаях
турбулентное движение жидкости позволяет транспортировать уголь, руду и многое другое по трубам. В других — с турбулентными вихрями приходится бороться. Хоро шо зная законы турбулентного движения, можно было бы строить более быстрые и экономичные суда и самолеты.
Теория Фейгенбаума приводит к парадоксальному выводу: между хаосом и поряд ком есть глубокая внутренняя связь. Непериодический, случайный процесс возникает
как предел все более сложных структур (циклов S r ). Хаос возникает как сверхслож
ная организация (цикл S 2~ )! Этот вывод является очень общим: он может относиться к моделям экологии, гидродинамике — к любым системам, где есть последователь ность бифуркаций удвоения периода.
Возможно, вы подумали, что сложность взаимоотношений порядка и хаоса, имеющая место в данной модели, связана с участием вещественных чисел. Тогда вспомните график функции Эйлера, график количества единиц в двоичной записи целых чисел. На этих графиках, где нет ничего, кроме целых чисел, также наблюдает ся сложная картина чередования хаоса и. циклов.
Еще более сложная картина может наблюдаться в многомерном (например, в двухмерном) случае. Если модель к трму еше и дискретная, то можно говорить о кле точных автоматах.
Клеточные автоматы
Клеточный автомат — это совокупность клеток пространства (возможно, много мерного), каждая из которых может находиться в одном из нескольких состояний. Клеточные автоматы представляют собой дискретную модель, основанную на рекур рентных правилах: следующий шаг является результатом применения правил к кон фигурации, достигнутой на предыдущем шаге. Вот как эволюционирует Вселенная (иногда ее удобно рассматривать тоже как клеточный автомат), населенная такими ав томатами. Все пространство (Вселенная) разбито на клетки, каждая из которых может находиться в одном из нескольких состояний. (Сами клетки тоже можно рассматри вать как простейшие автоматы. Тогда можно сказать, что в некоторых клетках “живут” простейшие автоматы.) Эти клетки (простейшие автоматы) подчиняются оп ределенным правилам (законам населяемой ими Вселенной). Сами правила обычно настолько просты, что могут быть занумерованы числами. Однако получающиеся в результате жизнедеятельности таких организмов конфигурации могут быть очень сложными. Иными словами, сообщество примитивных организмов (т.е. организмов, живущих по весьма примитивным правилам) может создать весьма сложную социаль ную структуру. Возможна и другая трактовка: хотя сами элементарные частицы уст роены просто и подчиняются весьма простым законам, они образуют нашу Вселен ную. (Разумеется, Вселенная устроена весьма сложно.)
Чтобы увидеть все это на экране, нам понадобится предварительно познакомиться с несколькими функциями. Функция CellularAutomaton [правило, начальная кон
фигурация, число ш агов] генерирует представление (список) конфигурации, в кото рую переходит начальная конфигурация после указанного числа ш агов в соответствии с заданным правилом. Функция Raster [{ { а и , а ]2, }, }] является двухмерным
графическим примитивом, который представляет прямоугольный массив ячеек в гра дациях серого. (Состояние клетки удобно изображать определенным цветом или гра дацией серого.) Вот пример.
Show[Graphics[Raster[N[Table[ Mod[i,j]/9,{i,10},{j/10}]]]]];