Что это такое
Билинейная (двойная линейная) интерполяция находит значение функции двух переменных f(x, y), когда оно известно только в четырёх точках — углах прямоугольника. Это прямое обобщение обычной линейной интерполяции: там значение ищут между двумя точками на прямой, здесь — внутри прямоугольника на плоскости.
Типичная ситуация — таблица с двумя входами: по строкам одна величина (например, температура), по столбцам другая (давление), а нужное значение попадает между строками и столбцами.
Как считается
Известны значения в углах: f(x0, y0), f(x0, y2), f(x2, y0) и f(x2, y2). Нужно найти f(x1, y1) для точки внутри. Расчёт идёт в три обычные линейные интерполяции:
- по оси x на нижней стороне: f(x1, y0) — между f(x0, y0) и f(x2, y0);
- по оси x на верхней стороне: f(x1, y2) — между f(x0, y2) и f(x2, y2);
- по оси y между двумя найденными значениями — это и есть f(x1, y1).
Калькулятор заодно находит значения на левой и правой сторонах — f(x0, y1) и f(x2, y1): это пригодится, если нужен весь срез таблицы. Общая формула:
f(x1, y1) = f00·(1−t)(1−u) + f20·t(1−u) + f02·(1−t)u + f22·t·u,
где t = (x1 − x0) / (x2 − x0), u = (y1 − y0) / (y2 − y0) — доли пути по каждой оси (от 0 до 1 внутри прямоугольника).
Результат не зависит от того, с какой оси начинать: если сначала идти по y, а потом по x, получится то же число.
Пример
Температура воздуха известна на высоте 0 и 2 км над широтами 40° и 60°. Нужна температура на высоте 0,5 км над широтой 55°:
| широта 40° (y0) | широта 60° (y2) | |
|---|---|---|
| высота 0 км (x0) | 18 °C | 8 °C |
| высота 2 км (x2) | 6 °C | −4 °C |
- Доли пути: t = (0,5 − 0) / (2 − 0) = 0,25, u = (55 − 40) / (60 − 40) = 0,75.
- На широте 40°: 18 + 0,25 · (6 − 18) = 15 °C.
- На широте 60°: 8 + 0,25 · (−4 − 8) = 5 °C.
- Между ними по широте: 15 + 0,75 · (5 − 15) = 7,5 °C.
Именно эти числа показывает демо выше.
Что важно знать
- Нужны четыре угла прямоугольника, стороны которого параллельны осям: x0 ≠ x2 и y0 ≠ y2. Для произвольно разбросанных точек нужны другие методы (триангуляция, обратные расстояния).
- Это не плоскость. Вдоль каждой оси функция меняется линейно, но в целом поверхность изогнута (гиперболический параболоид). Поэтому по четырём углам она проходит точно.
- Точность хорошая, если функция внутри ячейки меняется плавно. Если таблица крупная, а зависимость сильно нелинейная, лучше брать ближайшую ячейку или более сложную бикубическую интерполяцию.
- Экстраполяция. Если точка вне прямоугольника (t или u вне диапазона 0…1), калькулятор всё равно посчитает, но ошибка быстро растёт с удалением.
Где применяется
- Справочные таблицы с двумя входами — СНиП и ГОСТ, теплотехника, гидравлика, свойства воды и пара: например, плотность или вязкость по температуре и давлению, коэффициент теплопередачи по скорости потока и температуре.
- Погода, карты, ГИС — температура, давление, высота рельефа известны в узлах регулярной сетки (метеомодели, цифровые модели рельефа), а нужна точка между узлами.
- Изображения и видео — при увеличении или повороте картинки цвет нового пикселя считается по четырём соседним; так работает режим «bilinear» в Photoshop, браузерах и видеокартах.
- 3D-графика и игры — фильтрация текстур, высота ландшафта под персонажем по карте высот.
- Инженерные расчёты — характеристики насосов, вентиляторов и двигателей (КПД, мощность по оборотам и нагрузке), аэродинамические таблицы, калибровочные таблицы датчиков с двумя параметрами.
- Финансы — ставка или коэффициент по сетке «срок × сумма», поверхности волатильности опционов (страйк × срок).
- Учёба — проверить решение задачи и увидеть промежуточные значения на всех сторонах прямоугольника.
Как пользоваться
- Заполните первую и третью строку: x0, y0, f(x0, y0) и x2, y2, f(x2, y2). Во второй строке — точку x1, y1, в которой нужно значение.
- Серые поля x и y ниже заполняются сами — осталось ввести f(x0, y2) и f(x2, y0).
- Нажмите «Рассчитать». С галочкой в кнопке расчёт идёт автоматически при каждом изменении.
- Можно вводить дроби (1/2), числа с запятой (0,5) и выражения вроде
sqrt(2).