gettablefunctionvalue

Функция получения значения функциональной зависимости по ее аргументам, хранящейся в виде таблицы в пакете таблиц

Синтаксис

b = gettablefunctionvalue(p_id, tbl_index, func_index, interp_mode, x, y);
b = gettablefunctionvalue(p_id, tbl_index, interp_mode, x1, x2, y); 

Аргументы

Имя Тип данных Описание
p_id integer Идентификатор загруженного в память пакета таблиц
tbl_index integer Индекс таблицы из пакета таблиц
func_index integer Индекс функциональной зависимости в таблице
interp_mode integer Способ интерполяции для расчета значения функциональной зависимости
x double Аргумент одномерной функциональной зависимости
x1 double Первый аргумент двумерной функциональной зависимости
x2 double Второй аргумент двумерной функциональной зависимости
y double Значение одно/двумерной функциональной зависимости

Описание

gettablefunctionvalue(p_id, tbl_index, func_index, interp_mode, x, y) – функция применяется для таблиц, представляющих из себя набор одномерных функциональных зависимостей вида: y = Fi(x), где i = func_index — порядковый номер функциональной зависимости (нумерация начинается с нуля).

Настоящая функция по заданному аргументу x в таблице с индексом tbl_index (нумерация начинается с нуля) пакета таблиц с идентификатором p_id находит ближайшее меньшее и большее табличное значение аргумента и заполняет y значением с учетом выбранного метода интерполяции. Для функции доступны два метода интерполяции:
  • 0 — линейная
  • 1 — ступенчатая
В случае ошибки функция gettablefunctionvalue(p_id, tbl_index, func_index, interp_mode, x, y) выводит соответствующее диагностическое сообщение (Табл. 1).
Табл. 1. Возможные ошибки и причины их возникновения
Ошибка Возможная причина
Задан некорректный идентификатор (ID) пакета таблиц Передано числовое значение, не являющееся идентификатором пакета таблиц. Пакет таблиц не загружен должным образом или уже уничтожен
Таблица с таким индексом отсутствует в пакете таблиц Передан идентификатор другого пакета таблиц. Опечатка в индексе таблицы
Таблица с таким индексом не является набором функций одного аргумента. Рекомендуется выбрать функцию ЯП с другими аргументами Передан идентификатор другого пакета таблиц. Выбранный вариант функции ЯП не подходит для заданного типа таблицы
Функциональная зависимость с таким индексом отсутствует в заданной таблице Передан идентификатор другого пакета таблиц. Опечатка в индексе функциональной зависимости
Тип интерполяции задан неверно Опечатка в значении типа интерполяции
Значение аргумента: #.#####E## выходит за границы применимости табличных данных [ #.#####E## ; #.#####E## ] Передан аргумент меньше / больше аргумента, предусмотренного таблицей (экстраполяция не поддерживается)
Ошибка доступа по ссылке -

gettablefunctionvalue(p_id, tbl_index, interp_mode, x1, x2, y) – функция применяется для таблиц, представляющих из себя двумерную функциональную зависимость вида: y = F(x1, x2).

Настоящая функция по заданным аргументам x1 и x2 в таблице с индексом tbl_index (нумерация начинается с нуля) пакета таблиц с идентификатором p_id находит соответствующие ближайшие меньшие и большие табличные значения аргументов и заполняет y значением с учетом выбранного метода интерполяции. Для функции доступны три метода интерполяции:
  • 0 — линейная
  • 1 — сплайном
  • 2 — методом Акимы
В случае ошибки функция gettablefunctionvalue(p_id, tbl_index, interp_mode, x1, x2, y) выводит соответствующее диагностическое сообщение (Табл. 2).
Табл. 2. Возможные ошибки и причины их возникновения
Ошибка Возможная причина
Задан некорректный идентификатор (ID) пакета таблиц Передано числовое значение, не являющееся идентификатором пакета таблиц. Пакет таблиц не загружен должным образом или уже уничтожен
Таблица с таким индексом отсутствует в пакете таблиц Передан идентификатор другого пакета таблиц. Опечатка в индексе таблицы
Таблица с таким индексом не является двумерной функцией. Рекомендуется выбрать функцию ЯП с другими аргументами Передан идентификатор другого пакета таблиц. Выбранный вариант функции ЯП не подходит для заданного типа таблицы
Тип интерполяции задан неверно Опечатка в значении типа интерполяции
Значение аргумента (1/2): #.#####E## выходит за границы применимости табличных данных [ #.#####E## ; #.#####E## ] Передан аргумент меньше / больше аргумента, предусмотренного таблицей (экстраполяция не поддерживается)
Заданный тип интерполяции не поддерживается табличными данными. Используется линейная интерполяция Табличных данных недостаточно для работы алгоритма сплайн‑интерполяции / метода Акимы (предупреждение)
Ошибка доступа по ссылке -

Результат

Имя Тип данных Описание
b boolean Функция возвращает логическую единицу, если значение функциональной зависимости успешно получено и логический ноль в противном случае

Пример

initialization
  var
    p_id: integer;
  // Получение идентификатора
  p_id = loadtablefunctionpack("file1.tbl");
end;

var
  X: double,
  Y: double;
// В качестве значения аргумента передается текущее модельное время
X = time;
// Получение значения: из пакета таблиц с идентификатором "p_id",
// таблица с индексом "2", функциональная зависимость - "1",
// используется линейная интерполяция - "0"
if not gettablefunctionvalue(p_id, 2, 1, 0, X, Y) then begin
  // Остановка расчета модели в случае ошибки
  blockresult = true;
  seterrorstr("Ошибка при получении значения");
end;

var
  X1: double,
  X2: double,
  Y:  double;
// В качестве значения аргумента передается текущее модельное время
X1 = time;
X2 = time div 100;
// Получение значения: из пакета таблиц с идентификатором "p_id",
// таблица с индексом "1", используется линейная интерполяция - "0"
if not gettablefunctionvalue(p_id, 1, 0, X1, X2, Y) then begin
  // Остановка расчета модели в случае ошибки
  blockresult = true;
  seterrorstr("Ошибка при получении значения");
end;

finalization
  // Удаление пакета таблиц при окончании моделирования
  freeobject(p_id);
end;

В случае ошибки функции gettablefunctionvalue будет выведено диагностическое сообщение, а переменная blockresult установлена в true.

Сопутствующие материалы

Материалов нет.