Среда разработки Unimod PRO 2 (версия 2.3.40)
 Руководство по программированию
×

LINTERP2 - линейная двумерная интерполяция


Назначение.
Функциональный блок LINTERP2 применяется для вычисления значения функции методом линейной двумерной интерполяции.
Состав структурной переменной.
Переменная со структурным типом LINTERP2 будет добавлена в локальный словарь автоматически при добавлении блока в редактор.
Алгоритм линейной двумерной интерполяции.
Двумерная линейная интерполяция позволяет вычислить значение функции f(x, y), если известны еще минимум 4 ее значения. Для расчета необходимы:
  • аргументы x1, x2, y1, y2 и значения функций f(x1, y1), f(x1, y2), f(x2, y1) и f(x2, y2);
  • аргументы x и y, для которых необходимо вычислить результат.
Результат двумерной интерполяции вычисляется в два этапа:
  • Методом линейной интерполяции определяются две вспомогательные точки вдоль оси абсцисс по формулам:
  • Проводится линейная интерполяция между двумя вспомогательными точками вдоль оси ординат по формуле:
Пример расчета методом двумерной линейной интерполяции.
  • Исходные данные:
  • VX[0, 10] - массив аргументов X
  • VY[20, 30] - массив аргументов Y
  • TF[ [30, 40], [35, 50] ] - двумерный массив значений функции f(Xi, Yi)
  • X = 4, Y = 25 - аргументы для поиска интерполированного значения.
    2. Вычисление первой вспомогательной точки:
    3. Вычисление второй вспомогательной точки:
    4. Вычисление интерполированного значения на основе двух вспомогательных точек:
 
Пример синтаксиса на языке ST.
//вызов функционального блока
Block.LINTERP2(X, VX, VX_SIZE, Y, VY, VY_SIZE, TF, TF_SIZE_X, TF_SIZE_Y);
 
//чтение выходных параметров функционального блока
F := Block.F;
FAULT := Block.FAULT;
Список возможных ошибок на выходе FAULT.
Код ошибки
Краткое описание
1
Массив X не REAL
2
VX_SIZE <=2 или больше размера массива X
3
Ошибка при проверке массива X
4
Ошибка доступа к массиву X
5
Массив Y не REAL
6
VY_SIZE <=2 или больше размера массива Y
7
Ошибка при проверке массива Y
8
Ошибка доступа к массиву Y
9
Массив F не REAL
10
(TF_SIZE_X < VX_SIZE) или (TF_SIZE_Y < VY_SIZE)
11
Размер массива F не равен F_SIZE_X*F_SIZE_Y*4
12
Ошибка при проверке массива F
13
Ошибка доступа к массиву F
14
Массив X содержит некорректные данные
15
Массив Y содержит некорректные данные