LINTERP1 - линейная одномерная интерполяция

Назначение.
Функциональный блок LINTERP1 применяется для вычисления значения функции методом линейной одномерной интерполяции.
Состав структурной переменной.
Переменная со структурным типом LINTERP1 будет добавлена в локальный словарь автоматически при добавлении блока в редактор.

Принцип линейной одномерной интерполяции.
Линейная интерполяция позволяет вычислять промежуточное значение линейной функции по двум известным крайним значениям, между которыми условно проводится прямая линия. Для вычислений используется следующая формула, где x1 и x2 - аргументы, f(x1) и f(x2) - соответствующие им значения функции, а x - аргумент, для которого вычисляется интерполированное значение по формуле:

Например, если для двух аргументов x1=1 и x2=2 известны значения функции F(x1)=10 и F(x2)=20, то для других аргументов, значения которых находятся между x1 и x2, на основании линейной зависимости могут быть вычислены соответствующие значения функции. Пример вычислений схематично продемонстрирован на следующем изображении.

Если известны значения функции для 3-х и более аргументов, графически это будет выглядеть в виде кусочно-линейной функции. В таком случае значения функции вычисляются для отдельного прямолинейного участка, в границы которого входит аргумент X. Данный вариант подробно описан далее в настоящем разделе.
Алгоритм выполнения блока.
-
На входы VX и VF передаются ссылки на массивы вещественных чисел. В массиве VX содержатся значения аргументов, а в массиве VF известные значения функции для соответствующих аргументов. В качестве примера зададим массив аргументов VX=[1, 2, 3, 4, 5] и массив соответствующих значений функции VF=[10, 30, 40, 20, 10].
-
На вход VX_SIZE передается количество аргументов из массива VX, на основании которых формируются отдельные участки линейных зависимостей (линейные функций). При этом значение VX_SIZE не должно превышать размерность массивов VX и VF. В нашем примере зададим VX_SIZE=4.
-
Для заданного аргумента X (например X=2.4) определяется участок линейной зависимости для дальнейших вычислений.

-
В соответствии с выбранной линейной зависимостью для аргумента X вычисляется значение функции:

-
Если аргумент X выходит за диапазон имеющихся значений в массиве VX, на выход F передается значение функции для крайнего аргумента. В вышеуказанном примере при X=0.5 выход F=10, а при X=5 выход F=20.
Пример синтаксиса на языке ST.
//вызов функционального блока
Block.LINTERP1(X, VX, VX_SIZE, VF);
//чтение вычисленного значения функции для аргумента X
F := Block.F;
//чтение кода ошибки
FAULT := Block.FAULT;
|
Список возможных ошибок на выходе FAULT.
|
