Билинейная интерполяция: различия между версиями

[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 1:
'''Билинейная интерполяция''' — в [[вычислительная математика|вычислительной математике]] расширение [[линейная интерполяция|линейной интерполяции]] для [[функция (математика)|функций]] двух [[Переменная величина|переменных]]. Ключевая идея заключается в том, чтобы провести обычную линейную интерполяцию сначала в одном направлении, затем в перпендикулярном. Формула билинейной интерполяции интерполирует значения функции в произвольном прямоугольнике по четырем её значениям в вершинах прямоугольника и [[экстраполяция|экстраполирует]] функцию на всю остальную плоскость.
 
[[Файл:Bilinear interpolation.png|right|thumb|Четыре красные точки представляют собой известные значения функции. Значение в зеленой точке должно быть интерполировано.]]
[[Файл:Bilininterp.png|right|thumb|Пример билинейной интерполяции в единичном квадрате. Значения вершин составляют 0, 1, 1 и 0.5. Интерполированные значения в каждой точке представлены цветом.]]
== Алгоритм ==
Допустим, что необходимо интерполировать значение функции <math>f</math> в точке <math>P = (x, y)</math>. Для этого необходимо знать значения функций в окружающих <math>P</math> точках <math>Q_{11} = (x_1, y_1),</math> <math>Q_{12} = (x_1, y_2),</math> <math> Q_{21} = (x_2, y_1)</math> и <math>Q_{22} = (x_2, y_2)</math>.
 
Первым шагом линейно интерполируется значение вспомогательных точек <math>R_1</math> и <math>R_2</math> вдоль [[абсцисса|оси абсцисс]], где
Строка 21:
: <math> f(P) \approx \frac{y_2-y}{y_2-y_1} f(R_1) + \frac{y-y_1}{y_2-y_1} f(R_2). </math>
 
Это и есть приблизительноеинтерполируемое (экстраполируемое) значение функции в точке P, то есть ''<math>f''(''x'', ''y'').</math>:
: <math>
\begin{align}
Строка 31:
</math>
 
В особомчастном случае, когда известные точки находятсяявляются на вершинахвершинами [[Единичный квадрат|единичного квадрата]], то есть имеютс [[координаты|координатами]] (0,&nbsp;0), (0,&nbsp;1), (1,&nbsp;0), и (1,&nbsp;1), формула билинейной интерполяции упрощается до
: <math> f(x,y) \approx f(0,0) \, (1-x)(1-y) + f(1,0) \, x(1-y) + f(0,1) \, (1-x)y + f(1,1) xy. </math>
 
Или же с помощью умножения [[вектор (алгебра)|векторов]] сна [[матрица (математика)|матрицейматрицу]]:
 
: <math> f(x,y) \approx \begin{bmatrix}
Строка 42:
1-y \\
y \end{bmatrix}</math>
Обратите внимание:, что сам [[интерполянт]] не линеен, а билинеен:
: <math> z=(a_1 x + a_2)(a_3 y + a_4), \, </math>
так как является произведением двух линейных функций. Альтернативное написание:
: <math> z=b_1 + b_2 x + b_3 y + b_4 x y \, </math>
где
: <math> b_1 = f(0,0) \,</math>