Функция равна А/В. Если В = 0, функция равна X. XIDZ обычно используется для задания некоторого предела при делении А на В, в ситуации, когда B → 0.
То же, что: IF THEN ELSE (B = 0, X, A/B)
См. также: ZIDZ.
XIDZ (units of A, units of B, units of A/B) --> units of A/B (т.е. те же правила задания размерности, что и в операторе деления)
Примеры:
XIDZ(3, 4, 1) равняется 0.75
XIDZ(3, 0, 1) равняется 1.0
ZIDZ (A,B) – то же, что XIDZ, но при делении на 0 равна нулю.
ZIDZ обычно используется в специальном случае, когда предел частного A/B при B → 0 равен нулю.
То же, что: XIDZ (A,B,0.0).
ZIDZ (units of A, units of B) --> units of A/B (ограничения по размерности – те же, что и в операторе деления).
Примеры:
ZIDZ (3, 4) равняется 0.75
ZIDZ (3, 0) равняется 0
Обе функции (XIDZ и ZIDZ) в действительности сравнивают абсолютное значение B с малой величиной (1E-6) и используют третий аргумент (X), если B меньше этого значения.
Lookups – табличные функции.
Табличные функции (называемые также таблицами или графическими функциями) используются для построения произвольных нелинейных зависимостей y(x) в виде перечня значений аргументов и значений функции. Подобные функции могут задаваться парами значений x и y или перечнем всех значений по оси x, а затем – по оси y, т.е. могут использоваться следующие форматы:
|
|
LOOKUP NAME ([(Xmin,Xmax),(Ymin,Ymax)](X1, Y1), (X2,Y2),...(Xn, Yn))
Или: LOOKUP NAME(X1, X2, X3,....Xn, Y1, Y2, Y3,....Yn)
Во втором случае число значений X должно соответствовать числу значений Y. Для всех табличных функций должно быть задано не меньше, чем по два значения x и y.
Табличные функции обычно строятся с использованием Редактора графических функций (Graph Lookup Editor), который позволяет вводить пары значений x и y, или задавать форму кусочно-линейной зависимости с помощью мыши. Если используется Graph
Lookup Editor, он добавит к определению функции информацию о шкале (диапазоне значений), например:
спрос function (Time) function ([(0,52)–(80,150)], (0,100), (13,120), (26,150), (39,80), (52,100)
Диапазон в квадратных скобках [(0,52)-(80,150)] используется редактором Graph Lookup Editor для определения масштаба. Нет необходимости специально вводить масштаб при записи табличных значений.
Использование табличных функций.
Табличные функции используются так же, как и другие встроенные функции с одним аргументом, например:
outvar = lookup name(invar) ~~|
выходная переменная = lookup имя (входная переменная).
Замечание о размерности. Рекомендуется, чтобы аргумент табличной функции был безразмерным, и если это не так, при проверке размерности появится предупреждающее сообщение. Значения функции имеют размерность, указанную при ее определении. Значения функции вычисляются на основе кусочно-линейной аппроксимации табличных значений. Если аргумент X принимает в ходе имитации значения, выходящие за область его табличного определения, в качестве значений функции будут сохраняться, соответственно, первое или последнее значения Y, и появится предупреждающее сообщение.
|
|
Если вы хотите экстраполировать табличную зависимость, необходимо в качестве минимального или максимального значений аргумента задать большое число, например:
extrap up lookup((0,0),(.5,7),(.75,.9),(1,1),(2,2),(1E6,1E6))
Пример:
Если мы хотим, чтобы в рассматриваемом нами примере (рис. 2) еженедельная доля отходов определялась на основе явно заданной табличной функции, необходимо модифицировать структурную схему модели (см. ниже пример 2 для функции WITH LOOKUP), введя две новые переменные: скрытую переменную <Time> и переменную база по отходам function.
Щелкните мышью на переменной база по отходам и нажмите кнопку Редактора уравнений на панели инструментов. Замените уравнение, стоящее в окне редактирования, на:
база по отходам = база по отходам function (Time) и нажмите OK.
Выберите на диаграмме переменную база по отходам function и вновь откройте рабочее окно Редактора уравнений. В разворачивающемся списке Type (Тип переменной) выберите lookup. Щелкните на кнопке As Graph и в окне Редактора графических функций введите значения аргумента и функции одним из способов, описанных ниже в примере 2 для функции WITH LOOKUP.
В модели-программе соответствующий оператор описания табличной функции будет иметь вид:
база по отходам function ([(0,0)–(52,1)],(0,0. 01),(13,0.009),(26,0.008),(39,0.007), (52,0.006))
Ту же функцию можно было сразу записать в соответствующем окне диалога Редактора формул в виде:
база по отходам function ((0,0.01),(13,0.009),(26,0.008),(39,0.007),(52,0.006)) или
база по отходам function (0,13, 26, 39,52, 0.01,0.009,0.008,0.007,0.006)
В табличных функциях рекомендуется использование нормированных значений аргумента. Для нормировки обычно используются нормативные значения. В рассматриваемом нами примере аргумент можно нормировать, разделив на скрытую переменную FINAL TIME (ее тоже нужно добавить в диаграмму и соединить стрелкой с переменной база по отходам). Тогда соответствующие операторы будут иметь вид:
база по отходам = база по отходам function (Time/Final time)
база по отходам function (0,0.01,0.009,0.008,0.007,0.006)
Пары значений x,y (и число пар x,y) в табличной функции можно изменять при задании условий прогона модели.
WITH LOOKUP (x,(L#)) – табличная функция, встроенная в дополнительную переменную. В скобках указывается имя аргумента x и набор значений для пар x,y, по которым строится (внутренняя) кусочно-линейная аппроксимация зависимости y(x)
Ограничение: функция должна быть записана в правой части уравнения сразу после знака равенства и не может являться частью другого выражения.
Функция WITH LOOKUP – удобный способ задать нелинейную зависимость, не называя явно используемую табличную функцию. Это может удобнее и быстрее, чем при задании отдельной табличной переменной, но не так гибко.
WITH LOOKUP (dmnl,#) --> units.
Как и в обычной табличной функции, предполагается (но не является обязательным), что аргумент x безразмерный (иначе появится предупреждение). Единицы измерения значений функции соответствуют размерности переменной в левой части уравнения.
Пример:
X=WITH LOOKUP (1.5,((0,1),(1,1),(2,2)) is equal to 1.5.