Numerical Algorithms for Nonlinear Dynamics
&
Existing Program Implementations

Software for bifurcation analysis
CONTENT: [Un]necessary details

SGTND main    : :    Algorithms and Programms    : :    Software for bifurcation analysis    : :    CONTENT    : :    Unnecessary details

russian      noframes
frames  

Тактико-технические возможности программы CONTENT представлены в таблице. От себя добавлю еще раз, что если бы с помощью CONTENTа можно было бы продолжать по параметру все бифуркации коразмерности-1 предельных циклов и находить на этих кривых точки бифуркаций коразмерности-2 – я бы не стал, пожалуй искать лучшего. Разве только гомоклинические или гетероклинические траектории… но это уже клиника.

Для того, чтобы работать с CONTENT не нужно уметь программировать на C. Хотя, на самом деле, если уж быть точным, тот язык на котором набираются выражения для правых частей при создании новой системы в соответствующем окне программы – это все-таки C. Но необходимый минимум знаний можно получить, рассматривая приведенные в справке примеры. Не забывайте заканчивать каждую строку точкой с запятой.

CONTENT, как и его преемник MATCONT (а также, к примеру, AUTO), для нахождения предельного цикла использует метод коллокаций. Это означает, что, хотя (в отличие от AUTO) в его состав и входят подпрограммы типа Рунге-Кутта для численного решения систем ОДУ, они используются только на этапе нахождения начального приближения (или же если просто надо посмотреть вид траектории системы в фазовом пространстве при разных начальных условиях – CONTENT способен строить 2-х и 3-х мерные проекции орбит). Для отслеживания же предельного цикла его задают значениями на определенным (оптимальным в каком-либо смысле) образом выбранной сетке во времени на периоде цикла - эти значения, для начала, могут быть получены с помощью, скажем, вышеупомянутых процедур пошагового интегрирования. Причем сетка двухуровневая – то есть период цикла разбивается на отрезки, на каждом из которых в свою очередь выбирается ряд узлов. Построенная на такой сетке кусочно-полиномиальная аппроксимация подставляется непосредственно в уравнения системы ОДУ и получается система нелинейных уравнений, которая решается способом, наиболее подходящим к ее конкретной разреженной структуре.

Метод коллокаций обладает массой достоинств. Снимается часть проблем, связанных с пошаговыми методами – устойчивость, необходимость выбора сечения Пуанкаре (или аналогичного условия) и т.д.. Часто, по ходу дела, есть возможность достаточно легко оценить показатели Флоке (или мультипликаторы) – по крайней мере, старшие. Вообще, считается, что для вычислительно сложных (патологических) задач метод коллокаций работает лучше, чем пошаговый метод «стрельбы» (см. напр. краткий обзор здесь). Для него разработаны методы вычисления и продолжения по параметру гомо- и гетероклинических траекторий к положениям равновесия систем ОДУ (реализовано в последней версии MATCONT и в виде примочки к AUTO97 HOMCONT).

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

По поводу точности отмечу еще одно обстоятельство. У любого предельного цикла есть тривиальный мультипликатор, равный 1 (он связан со сдвигами вдоль траектории). Когда отлаживаю какую-то свою программу, всегда смотрю на него: есть ли он вообще (если нет, то это означает что где-то пенка) и с какой точностью он получается – это дает мне грубое представление о точности моих вычислений (кстати, в руководстве к AUTO2000 я нашел точно такой же совет). В CONTENTе эта единичка получается всегда только с точностью до какого-то знака и повлиять на эту точность я не мог. Не знаю, с чем это связано. Может, оно так и должно быть.

Возникает еще и проблема получения начального приближения, поскольку необходимо иметь всю траекторию целиком. Эта проблема, как я уже упоминал, в CONTENTе решается с помощью процедур пошагового интегрирования, например, в случае устойчивого цикла – простой намоткой на него. Есть еще возможность стартовать из точки бифуркации Хопфа. Оба способа подробно проиллюстрированы в учебнике (tutorial) на примерах.

Tutorial is a quite useful thing. But a distinctive feature of CONTENT is contextual help. Rare freesoft developer is wasting time on writing the truly useful contextual help pages. Detailed and factual, with descriptions for all windows and for each bifurcation type. It may be even used as a short course of applied bifurcation theory. There is developer manual, very compendius one. As far as I understand, V.V.Levitin has attached a powerful codegenerator, allowing to extend the program whithout recompiling, by editing some configuration files.