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). | Ошибка | Возможная причина |
|---|---|
| Задан некорректный идентификатор (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). | Ошибка | Возможная причина |
|---|---|
| Задан некорректный идентификатор (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.
Сопутствующие материалы
Материалов нет.