Что такое Simview?

Simview - это интерактивный программный пакет с дружественным интерфейсом, предназначенный для интегрирования моделей динамических систем (систем обыкновенных дифференциальных уравнений) и вывода результатов в графическое окно.
Уравнения математических моделей можно менять и добавлять, создавая новые директории на диске. Значения параметров в процессе интегрирования можно плавно менять, не перезапуская программу.
Помимо построения фазовых проекций, Simview может строить сечения Пуанкаре, вычислять период предельного цикла, значения его мультипликаторов, искать и диагностировать точки бифуркаций при движении по одному параметру, вычислять значения спектра ляпуновских экспонент.
Для того, чтобы запустить программу Simview нужно, предварительно запустив X-Windows, зайти в директорию Simview и набрать команду sv. При этом программа начнет работу с ранее заданной динамической системой, имя которой указано в верхней части окна.

Как задать динамическую систему (ДС)?

Для этого в директории Simview создается новая директория с именем ДС, например, my_system, где в дальнейшем будут лежать все файлы, относящиеся к данной системе. Для начала работы необходимо создать три файла:
1) my_system.c, содержащий уравнения модели и условие для сечения Пуанкаре
2) my_system.h с описаниями и значениями констант
3) init.st. файл состояния системы для начального запуска.
CОВЕТ: Вы можете просто скопировать подходящую директорию из числа уже заданных динамических систем, изменив ее имя и имена указанных файлов, а потом подредактировать их содержимое. Директорию для копирования лучше выбирать, исходя из размерности и числа параметров той системы, которую вы хотите задать.

Например, нам нужно работать с генератором с инерционной нелинейностью, который описывается дифференциальными уравнениями:
x'=mx+y-zx
y'=-x
z'=-g*z+g*SGN(x)x^2

Для этого мы создаем директорию gin.
Далее в этой директории необходимо создать три файла gin.c , gin.h , init.st

Формат файла с уравнениями динамической системы.

Пример файла gin.c: (запись дифференциальных уравнений)

void model (double t, double x[], double dx[]) { int chi; /* Здесь можно вставить любые*/ /* Операции с используемыми переменными*/ if (x[0]>=0) chi=1; else chi=0; dx[0] = par[0]*x[0]-x[2]*x[0]+x[1]; dx[1] = -x[0]; /* Дифференциальные уравнения*/ dx[2] = -par[1]*x[2]+par[1]*chi*x[0]*x[0]; } double cutfun (double t, double x[]) { return (x[0]); }
Здесь в функции model записываются уравнения для динамической системы.
dx[0], dx[1],..., dx[N-1] - это производные по времени (их количество определяется размерностью системы =N), т.е. x', y', z'...

x[0], x[1],.., x[N-1] -это динамические переменные (их количество также определяется размерностью системы =N), т.е. x, y, z...

par[0], par[1],.., par[k-1] - это параметры, которые можно будет менять при работе с данной Динамической системой.

Формат header-файла

Пример файла gin.h (описываются количественные характеристики)
* Макросы                                                            *

#define SYSTEMNAME "GIN System" /* Название системы(можно любое)*/ #define MOD_NAME "gin" /* Директория, где содержатся данные ДС*/ #define AUTONOMOUS TRUE /* автономная система или с внеш.воздействием*/ #define SYS_DIM 3 /* Размерность ДС =N(смотри выше)*/ #define NO_PAR 2 /* Количество изменяемых параметров =k*/
* Integration specifics *
#define ABS_TOL 1e-7 // Параметры численных алгоритмов #define NEWT_ABS_TOL 1e-7 // библиотеки SimPack #define NEWT_REL_TOL 1e-5 // #define REL_ERR 1e-6 // #define INIT_STEP 1e-2 // #define MAX_STEP 1e-1 // #define MAX_CONT_STEP 1e-1 /* Эти данные лучше установить, такие, как*/ #define MAX_CONT_STEPS 100 /* они здесь, т.к. их можно будет*/ #define JAC_PERT 1e-6 /* менять в процессе работы*/ #define PARAM_JAC_PERT 1e-6 #define AUTO_TIME 100 #define AUTO_STROBO 10 #define WRITE_TIME 100
* Poincare options *
#define CUT_TOL 1e-6
#* Lyapunov calcualtions *
#define LYAP_EPS 1e-5 #define LYAP_GSRTIME 1 /* Эти данные лучше установить, такие, как*/ #define LYAP_TRANS 50 /* они здесь, т.к. их можно будет*/ #define LYAP_SIM 100 /* менять в процессе работы*/ #define LYAP_NN SYS_DIM


Формат файла init.st

Файл init.st (начальные условия) задает значения параметров и переменных, а также шаг их изменения. Все эти величины, кроме имен переменных и параметров, также можно изменять в процессе работы.
init.st:

#System variables X -0.793826 Y 2.93482 Z 6.05762 #System parameters m 6.324460 0.000100 g 0.010005 0.000000 #Selected variables 1 3 #Selected parameters 1 2 #Plotting area (x1 : y1), (x2 : y2) -10.038 5.89725 10.038 6.92016
System variables - это начальные условия для динамических переменных, описанных в файле<имя ДС>.c (gin.c), причем описываться они должны в той же последовательности, т.е. X соответствует x[0], Y соответствует x[1], и т.д. Символы X, Y, Z можно устанавливать любые.

System parameters - это начальные значения параметров, первая цифра в строке соответствует величине параметра, а вторая - шагу, с которым этот параметр можно будет менять (см. пункт Смена параметров). Так же, как и для начальных условий, необходимо соблюдать четкую последовательность записи параметров, т.е. в примере "m" соответствует par[0], "g" соответствует par[1], и т.д.

Selected variables - выбранные переменные, по которым будет строиться фазовый портрет, в нашем примере таковым является зависимость Z от X.

Selected parameters - выбранные параметры, которые можно будет менять в процессе интегрирования, в нашем примере "m" можно менять клавишами "вверх/вниз", а "g" - клавишами "влево/вправо".

Plotting area - масштаб рисуемой поверхности.

Как начать работу с динамической системой?

После того, как эти три файла готовы, можно выйти из этой директории и запустить Simview. Этой цели служат 2 команды: sv и svr.
"r" - означает "recompile", в этом случае предварительно создается/обновляется исполняемый файл Simview.
Пользуйтесь командой svr <имя системы>, если вы:
- собираетесь работать с иной, нежели в прошлый раз, системой;
- что-то меняли в уравнениях либо header-файле;
- перенесли Simview на другой компьютер.


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

Что делать после запуска программы?

При запуске программы Simview динамическая система сразу запускается на интегрирование (после нажатия любой клафиши), при этом на экран выводится проекция фазового портрета.
Переменные по осям можно менять, для этого нужно нажать клавишу "P", и в открывшемся меню цифрами выбрать нужные переменные.

Управлять режимом работы программы можно в процессе ее работы.

Горячие клавиши:
"Pause" - система прекращает интегрирование до повторного нажатия этой
          клавиши;
"X" - смена рисования с линий на точки и обратно;
"A" - вывод осей;
"D" - вывод диагонали;
"B" - стробоскопический режим, т.е. система интегрирует, но практически не
      выводит ничего на экран, применяется в случаях ускорения счета;
"R" - установка области рисования;
"G" - автошкала;
"E" - уравнивание диапазонов осей;
"C" - центровка;
"Pgup-Pgdn" - увеличение/уменьшение масштаба;
"Z" -  установить масштаб;
"Space" - очистка экрана;
"F1" - смена цвета рисования на черный;
"F2" - смена цвета рисования на зеленый;
"F3" - смена цвета рисования на желтый;
"F4" - смена цвета рисования на синий;
"F5" - смена цвета рисования на розовый;
"F6" - смена цвета рисования на светло-зеленый;
"F7" - смена цвета рисования на красный;
"Q"="Esc" - выход из Simview.


Как задать/изменить параметры?

Параметры можно менять как с заданным шагом (стрелками "вверх/вниз" и "влево/вправо"), так и непосредственно установив точное значение.

При выборе, какие параметры нужно менять с заданным шагом, нужно нажать клавишу "I". При этом высветиться меню, где можно выбрать цифрами, какой параметр будет меняться клавишами "вверх/вниз", и какой - клавишами "влево/вправо", т.е. установить активные параметры.
Начальный шаг по каждому параметру задан в файле состояния *.st.
Увеличить шаг можно клавишей "*", а уменьшить - "/" .

Точное значение параметра можно задать, если щелкнуть левой кнопкой мыши по окну нужного параметра в правом углу экрана, либо нажать правую клавишу мыши, после чего в меню Parametrs выбрать нужный параметр.

Как записать текущее состояние?

Для того, чтобы запомнить текущее состояние системы, нужно нажать клавишу "S" и набрать имя файла. При этом будет записан файл: <имя файла>.st, он будет аналогичен файлу init.st (см. гл. Создание новой ДС.) , и будет находиться в директории данной ДС.

Как загрузить файл состояния?

Для того, чтобы загрузить записанное ранее состояние системы с диска, необходимо нажать "L", причем нужно вводить только имя файла, расширение .st не указывается.

Как записать траекторию в файл?

Необходимо нажать клавишу "T", откроется меню, где:
Save trajectory to file : имя файла, куда будут записаны данные,
                          (расширение .dat не указывать)

Simulation time :         время, в течение которого будут 
                          записываться данные.

Number of datapoints :    количество точек в файле данных.

Затем можно просто записать данные в файл кнопкой Save, а можно путем
нажатия кнопки Plot вывести на экран временные реализации.

Примечание: все упомянутые операции можно осуществлять в меню 
путем нажатием правой кнопки мыши. 

Как рассчитать период, мультипликаторы в точке и ляпуновские показатели?

Для начала необходимо установить периодичность режима, например, если у нас двухтактный цикл (две петли на экране), то периодичность =2, если трехтактный, то =3 и т.д. Периодичность предельного цикла устанавливается клавишей "O".

Расчет мультипликаторов в точке производится клавишей "F".

Расчет ляпуновскиx характеристических показателей производится клавишей "Y".
При этом появляется меню, где необходимо установить различные параметры алгоритма вычисления:


Perturbation size                   - размер возмущения;

Time between re-orthonormalizations - время между перенормировками;

Number of transient steps:          - количество шагов на этапе установления;

Number of calculation steps:        - количество шагов в процессе вычисления;

Number of exponents to calculate:   - количество вычисляемых экспонент(старших).

Поиск бифуркаций предельного цикла при изменении управляющего параметра.

Программа Simview позволяет искать бифуркации режимов путем изменения какого-нибудь параметра посредством уменьшения или увеличения его.
Установите периодичность предельного цикла клавишей "O"(см. выше).
Нажмите правую кнопку мыши, войдите в меню Continuation и, в зависимости от того, какой параметр вы хотите менять, выберите:

Upwards   - увеличение параметра, который меняется клавишами "вверх/вниз"

Downwards - уменьшение параметра, который меняется клавишами "вверх/вниз"

Left      - увеличение параметра, который меняется клавишами "влево/вправо"

Right     -уменьшение параметра, который меняется клавишами "вправо/влево"

Далее откроется меню:

Write state info to file - Запись данных при изменении параметра (файл с
                           расширением .sp);
Max number of steps      - Максимальное количество изменений;

Max stepsize             - Максимальные шаг при изменении параметра.

Затем система будет производить расчеты до тех пор, пока не произойдет
бифуркация режима, либо пока система не произведет максимальное количество
изменений (Max number of steps).