XIDZ (A,B,X) – Функция деления с корректировкой деления на 0

Функция равна А/В. Если В = 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.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: