MIMIC - MIMIC

MIMIC , известный только с заглавной буквы, - это бывший компьютерный язык моделирования, разработанный в 1964 году Его Превосходительством Петерсеном , Ф. Дж. Сансом и Л. М. Варшавски из группы системной инженерии в составе командования материально-технического обеспечения ВВС на авиабазе Райт-Паттерсон в Дейтоне, штат Огайо , США. Это язык непрерывного блочного моделирования, ориентированный на выражения , но способный включать блоки алгебры, подобной FORTRAN .

Мнемосхемы представляет собой дальнейшее развитие от MIDAS ( М odified я ntegration D igital nalog S imulator), который представлен аналоговый компьютерный дизайн. Написанный полностью на FORTRAN, но одна подпрограмма на COMPASS , и запущенный на суперкомпьютере Control Data , MIMIC способен решать гораздо более крупные имитационные модели.

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

Программный пакет MIMIC, написанный как оверлейные программы FORTRAN, выполняет операторы ввода математической модели за шесть последовательных проходов. Программы моделирования, написанные на MIMIC, скорее компилируются, чем интерпретируются. Ядром пакета моделирования является числовой интегратор с переменным шагом метода Рунге-Кутта четвертого порядка . Существует множество полезных функций, связанных с элементами электрических цепей, помимо некоторых математических функций, имеющихся в большинстве научных языков программирования. Нет необходимости сортировать операторы в порядке зависимостей переменных, поскольку MIMIC делает это внутренне.

Части программного обеспечения, организованные в виде оверлеев:

  • MIMIN (ввод) - считывает программу и данные пользовательского моделирования,
  • MIMCO (компилятор) - компилирует пользовательскую программу и создает в ядре массив инструкций,
  • MIMSO (sort) - сортирует массив инструкций по зависимостям переменных,
  • MIMAS (ассемблер) - преобразует инструкции BCD в машинно-ориентированный код ,
  • MIMEX (выполнить) - выполняет пользовательскую программу путем интеграции,
  • MIMOUT (вывод) - выводит данные в виде списка или диаграммы данных.

пример

Проблема

Рассмотрим модель хищник-жертва из области морской биологии, чтобы определить динамику популяций рыб и акул. В качестве простой модели мы выбираем уравнение Лотки – Вольтерра и константы, указанные в учебном пособии.

Если

f (t): популяция рыб с течением времени (рыбы)
s (t): популяция акул с течением времени (акулы)
d f / dt или : скорость роста популяции рыб (рыб / год)
d s / dt или : скорость роста популяции акул (акул / год)
: скорость роста рыбы при отсутствии акул (1 / год)
: коэффициент смертности на встречу рыбы с акулами (1 на акул в год).
: смертность акул при отсутствии их добычи, рыбы (1 / год)
: эффективность превращения хищных рыб в акул (акул / рыб)

затем

с начальными условиями

Константы задачи представлены как:

  • = 600 рыб
  • = 50 акул
  • = 0,7 рыбы / год
  • = 0,007 рыбы / акула в год
  • = 0,5 акулы / год
  • = 0,1 акула / рыба
  • tmax = 50 лет
Пример кода
Card columns
0        1         2         3         4         5         6         7
12345678901234567890123456789012345678901234567890123456789012345678901
-----------------------------------------------------------------------
* A SIMPLE PREDATOR-PREY MODEL FROM MARINE BIOLOGY
/ (TUTORIAL 2: NUMERICAL SOLUTION OF ODE'S - 19/08/02)
/ ENVIRONMENTAL FLUID MECHANICS LAB
/ DEPT OF CIVIL AND ENVIRONMENTAL ENGINEERİNG
/ STANFORD UNIVERSITY
*
* LOTKA–VOLTERRA EQUATION
                  CON(F0,S0,TMAX)
                  CON(ALPHA,BETA,GAMMA,EPS)
          1DF   = ALPHA*F-BETA*F*S
          F     = INT(1DF,F0)
          1DS   = EPS*BETA*F*S-GAMMA*S
          S     = INT(1DS,S0)
                  HDR(TIME,FISH,SHARK)
                  OUT(T,F,S)
                  PLO(F,S)
                  FIN(T,TMAX)
                  END
<EOR>
600.       50.          50.
0.7        0.007        0.5         0.1
<EOF>

Ссылки

Ноты