Приднестровский государственныйуниверситет им. Т. Г. Шевченко
Физико-математический факультет Контрольная работапо дисциплине: Основы теории динамических систем
«Бифуркационное дерево»
Выполнила: Студентка 503 группы ФМФ СлободянюкА.А.
Проверил: доцент Соковнич С.М.
Тирасполь 2010
Содержание
Введение
1. Бифуркационное дерево
2. Постановка задачи
Литература
Приложение
Введение
К хаосу системы могут переходитьразными путями. Среди последних выделяют бифуркации, которые изучает теориябифуркаций. Бифуркация (от лат. bifurcus — раздвоенный) представляет собойпроцесс качественного перехода от состояния равновесия к хаосу черезпоследовательное очень малое изменение периодических точек.
Мы знаем из определения, бифуркациивозникают при переходе системы от состояния видимой стабильности и равновесия кхаосу. Примерами таких переходов являются дым, вода и многие другие самыеобычные природные явления. Так, поднимающийся вверх дым сначала выглядит какупорядоченный столб. Однако через некоторое время он начинает претерпеватьизменения, которые сначала кажутся упорядоченными, однако затем становятсяхаотически непредсказуемыми. Фактически первый переход от стабильности кнекоторой форме видимой упорядоченности, но уже изменчивости, происходит впервой точке бифуркации. Далее количество бифуркаций увеличивается, достигаяогромных величин. С каждой бифуркацией функция турбулентности дыма приближаетсяк хаосу. С помощью теории бифуркаций можно предсказать характер движения,возникающего при переходе системы в качественно иное состояние, а также областьсуществования системы и оценить ее устойчивость.
1. Бифуркационное дерево
Характерной иллюстрацией возможныхбифуркаций в системе служит бифуркационное дерево, представляющее собойзависимость возможных дискретных значений динамической переменной на аттрактореот параметра. Типичный пример такого дерева, построенного с помощью компьютера,показан на рисунке. Приведенный пример относится к одной из эталонных моделейнелинейной динамики – логистическому отображению/>. Наше аналитическоерассмотрение позволяет нарисовать начальный участок дерева (рис. 1)
/>
Рис. 1. Зависимость установившегосязначения переменной от параметра при бифуркации удвоения периода.
На нем изображены устойчивая неподвижнаяточка и рождающийся 2-цикл. В последнем случае переменная последовательнопосещает две ветви дерева. Такую ситуацию расщепления дерева называют бифуркациейудвоения периода. Полное дерево (для всех значений параметра) можно построить спомощью компьютера. Для этого надо задать некоторое начальное значениепеременной и параметра. Затем выполнить несколько сот итераций отображения,чтобы исключить переходные процессы и реализовать установившийся режим, ивывести некоторое количество точек на экран дисплея. Затем процедуру повторитьдля слегка измененного количества параметра (рекомендуем в качестве новогоначального значения переменной использовать полученное на предыдущем шагепроцедуры) и продолжать повторять до тех пор, пока весь интересующий диапазонзначений управляющего параметра не будет пройден. В результате получитсякартинка, показанная на рис. 2.
На бифуркационном дереве хорошо виднымоменты удвоений периода, в которые дерево расщепляется на две ветви,хаотический режим и различные «окна» периодических режимов в хаосе.
Тщательное рассмотрениебифуркационного дерева приводит к интересному выводу: внутри окон периодичноститакже наблюдаются удвоения периода. Например, при λ=1,75 возникаетустойчивый 3-цикл. Однако с ростом λ он исчезает на дереве (на самом делестановится неустойчивым), и от него отделяется устойчивый 6-цикл, затем 12-цикли т.д. Каскад удвоений 3-цикла завершается переходом к хаосу в своей, новойкритической точке. То же самое относится и к циклам других периодов.
/>
Рис. 2. Бифуркационное деревологистического отображения
2. Постановка задачи
Создать программу, которая при щелчкемышью на бифуркационном дереве в отдельном окне строит итерационную диаграмму.
Литература1. И. Ануфриев, А. Смирнов, Е. Смирнова «MATLAB 7»Cанкт-Петербург 2005 г2. А.П. Кузнецов, А.В. Савин, Л.В.Тюрюкина «ВВЕДЕНИЕ В ФИЗИКУ НЕЛИНЕЙНЫХ ОТОБРАЖЕНИЙ» Саратов 2010 г3. Ж.Йосс, Д.Джозеф « ЭЛЕМЕНТАРНАЯ ТЕОРИЯУСТОЙЧИВОСТИ И БИФУРКАЦИЙ »
бифуркациякомпьютерный итерационный периодический
Приложение
function varargout =mygui0(varargin)
% MYGUI0 M-file formygui0.fig
% MYGUI0, by itself,creates a new MYGUI0 or raises the existing
% singleton*.
%
% H = MYGUI0 returns thehandle to a new MYGUI0 or the handle to
% the existing singleton*.
%
% MYGUI0(‘CALLBACK’,hObject,eventData,handles,…)calls the local
% function named CALLBACKin MYGUI0.M with the given input arguments.
%
% MYGUI0(‘Property’,’Value’,…)creates a new MYGUI0 or raises the
% existing singleton*. Startingfrom the left, property value pairs are
% applied to the GUIbefore mygui0_OpeningFcn gets called. An
% unrecognized propertyname or invalid value makes property application
% stop. All inputs arepassed to mygui0_OpeningFcn via varargin.
%
% *See GUI Options onGUIDE’s Tools menu. Choose «GUI allows only one
% instance to run(singleton)».
%
% See also: GUIDE,GUIDATA, GUIHANDLES
% Edit the above text tomodify the response to help mygui0
% Last Modified by GUIDEv2.5 25-Dec-2010 20:41:17
% Begin initializationcode — DO NOT EDIT
gui_Singleton = 1;
gui_State =struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton,…
‘gui_OpeningFcn’,@mygui0_OpeningFcn, …
‘gui_OutputFcn’, @mygui0_OutputFcn,…
‘gui_LayoutFcn’, [], …
‘gui_Callback’, []);
if nargin &&ischar(varargin{1})
gui_State.gui_Callback =str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] =gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State,varargin{:});
end
% End initialization code- DO NOT EDIT
% — Executes just beforemygui0 is made visible. function mygui0_OpeningFcn(hObject, eventdata, handles,varargin)
% This function has nooutput args, see OutputFcn.
% hObject handle to figure
% eventdata reserved — tobe defined in a future version of MATLAB
% handles structure withhandles and user data (see GUIDATA)
% varargin command linearguments to mygui0 (see VARARGIN)
% Choose default commandline output for mygui0 handles.output = hObject;
% Update handles structureguidata(hObject, handles);
% UIWAIT makes mygui0 waitfor user response (see UIRESUME)
% uiwait(handles.figure1);
% — Outputs from thisfunction are returned to the command line. function varargout =mygui0_OutputFcn(hObject, eventdata, handles)
% varargout cell array forreturning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved — tobe defined in a future version of MATLAB
% handles structure withhandles and user data (see GUIDATA)
% Get default command lineoutput from handles structure
varargout{1} =handles.output;
% — Executes on buttonpress in btnPlot.
functionbtnPlot_Callback(hObject, eventdata, handles)
% hObject handle tobtnPlot (see GCBO)
% eventdata reserved — tobe defined in a future version of MATLAB
% handles structure withhandles and user data (see GUIDATA)
axes(handles.axes1)%задание текущегографика axes1
%
Построение бифуркационной диаграммы
n=10;
N=2^n;% Число итераций отображений
r0=0;% Начальная точка диаграммы
r1=2;% Конечная точка диаграммы
a(1)=0.1;% Нулевая итерация
Nb=100;%Число сохраненных итераций
Nr=1000;%Число шагов по паметру r
steppr=(r1-r0)/Nr;%Шаг по параметру r
for j=1:Nr %Цикл по параметру r
r(j)=r0+steppr*j;
for i=2:(N-Nb)% Не сохраненныеитерации
a(i)=logist(a(i-1),r(j));
end
b(j,1)=a(N-Nb);
for i=2:Nb%Не сохраненныеитерации
b(j,i)=logist(b(j,i-1),r(j));
end
end
plot(r,b,’.b’,’MarkerSize’,1);
% x = -2:0.2:2;
% y = exp(-x.^2);
% %plot(x, y)
% handles.Line=plot(x, y);
% guidata(gcbo, handles)%сохранениеструктуры handles для использования в других подфункциях
title(‘Axes 1’);
xlabel(‘\lambda’);
ylabel(‘X’);
set(hObject, ‘Enable’, ‘off’)%кнопкаочистить должна стать недоступной после вывода графика
set(handles.btnClear, ‘Enable’,’on’)% кнопка Очистить должна стать доступной
% — Executes on buttonpress in btnClear.
functionbtnClear_Callback(hObject, eventdata, handles)
% hObject handle tobtnClear (see GCBO)
% eventdata reserved — tobe defined in a future version of MATLAB
% handles structure withhandles and user data (see GUIDATA)
axes(handles.axes1);%задание текущегографика axes1
cla %Очистка осей
axes(handles.axes2);%задание текущегографика axes2
cla %Очистка осей
set(hObject, ‘Enable’, ‘off’)%кнопкаочистить должна стать недоступной после очистки осей
set(handles.btnPlot, ‘Enable’,’on’)%кнопка Построить должна стать доступной
% — Executes on mousepress over axes background.
functionaxes1_ButtonDownFcn(hObject, eventdata, handles)
% hObject handle to axes1(see GCBO)
% eventdata reserved — tobe defined in a future version of MATLAB
% handles structure withhandles and user data (see GUIDATA)
axes(handles.axes1);%задание текущегографика axes1
Coord = get(hObject,’CurrentPoint’);%
Получение матрицы координат указателямышки в момент нажатия на графике
x1 = Coord(2, 1);
y1 = Coord(2, 2);
%Вывод значения параметра r в полеtxtWin
strcode = num2str(x1);
set(handles.txtWin,’String’,strcode);
plot(x1,y1,’or’)%Построение графика
axes(handles.axes2);%задание текущегографика axes1
%Построение итерационной диаграммы
N=10;
r=x1;%Значение лямбда, котороеполучаем при щелчке мышкой
a=-0.36;%Начальная итерация
x=-1.5:0.1:1.5;%Вектор значений х
p=plot(x,x,’EraseMode’,’none’);axis([-1.5,1.5,-1,1.3])
set(p,’Xdata’,x,’Ydata’,logist(x,r),’color’,’k’),drawnow%
Построение параболы
set(p,’Xdata’,x,’Ydata’,x),drawnow%Построениепрямой у=х
b=logist(a,r);
y=[-1,b];
x=[a,a];
set(p,’Xdata’,x,’Ydata’,y,’color’,’r’),drawnow%
Построение 1-ой вертикальной линии
y=[b,b];
x=[a,b];
set(p,’Xdata’,x,’Ydata’,y),drawnow %построение 1-ой горизонтальнойлинии
a=b;
for i=1:(N-1)
b=logist(a,r);
y=[a,b];
x=[a,a];
set(p,’Xdata’,x,’Ydata’,y,’color’,’r’),drawnow%
Построение i+1-ой вертикальной линии
y=[b,b];
x=[a,b];
set(p,’Xdata’,x,’Ydata’,y),drawnow%построение i+1-ой горизонтальной линии
a=b;
end
% — Executes duringobject creation, after setting all properties.
functiontxtWin_CreateFcn(hObject, eventdata, handles)
% hObject handle to txtWin(see GCBO)
% eventdata reserved — tobe defined in a future version of MATLAB
% handles empty — handlesnot created until after all CreateFcns called
подфункция
function xdot=logist(t,r)
xdot=1-r.*t.*t;
/>
/>