На других языках

Билинейная интерполяция

В вычислительной математике билинейной интерполяцией называют расширение линейной интерполяции для функций в двух переменных. Ключевая идея заключается в том, чтобы провести обычную линейную интерполяцию с начала в одном направлении, затем в другом.

Четыре красные точки представляют собой известные значения функции. Значение в зеленой точке должно быть интерполировано.
Четыре красные точки представляют собой известные значения функции. Значение в зеленой точке должно быть интерполировано.
Пример билинейной интерполяции в единичном квадрате. Значения вершин составляют 0, 1, 1 и 0.5. Интерполированные значения в каждой точке представлены цветом.
Пример билинейной интерполяции в единичном квадрате. Значения вершин составляют 0, 1, 1 и 0.5. Интерполированные значения в каждой точке представлены цветом.

Допустим, что необходимо интерполировать значение функции f в точке P = (x, y). Для этого необходимо знать значения функций в (окружающих P) точках Q11 = (x1y1), Q12 = (x1y2), Q21 = (x2y1), и Q22 = (x2y2).

Первым шагом интерполируется (линейно) значение вспомогательных точек R1 и R2 вдоль оси абсцисс, где

R1 = (x,y1)
R2 = (x,y2)
 f(R_1) \approx \frac{x_2-x}{x_2-x_1} f(Q_{11}) + \frac{x-x_1}{x_2-x_1} f(Q_{21})

 

 f(R_2) \approx \frac{x_2-x}{x_2-x_1} f(Q_{12}) + \frac{x-x_1}{x_2-x_1} f(Q_{22})

Теперь проводится линейная интерполяция между вспомогательными точками R1 и R2.

 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).

Это и есть приблизительное значение фукнции в точке P, т.е. f(x, y).

 
\begin{align}
f(x,y) &\approx \frac{f(Q_{11})}{(x_2-x_1)(y_2-y_1)} (x_2-x)(y_2-y) \\
& + \frac{f(Q_{21})}{(x_2-x_1)(y_2-y_1)} (x-x_1)(y_2-y) \\
& + \frac{f(Q_{12})}{(x_2-x_1)(y_2-y_1)} (x_2-x)(y-y_1) \\
& + \frac{f(Q_{22})}{(x_2-x_1)(y_2-y_1)} (x-x_1)(y-y_1). 
\end{align}

В особом случае, когда известные точки находятся на вершинах единичного квадрата, т.е. имеют координаты (0, 0), (0, 1), (1, 0), и (1, 1), формула билинейной интерполяции упрощается до

 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.

Или же с помощью умножения векторов с матрицей:

 f(x,y) \approx \begin{bmatrix}
1-x & x \end{bmatrix} \begin{bmatrix}
f(0,0) & f(0,1) \\
f(1,0) & f(1,1) \end{bmatrix} \begin{bmatrix}
1-y \\
y \end{bmatrix}

Обратите внимание: сам интерполянт нелинеен:

 (a_1 x + a_2)(a_3 y + a_4), \,

т.к. является произведением двух линейных функций. Альтернативное написание:

 b_1 + b_2 x + b_3 y + b_4 x y \,

где

 b_1 = f(0,0) \,
 b_2 = f(1,0)-f(0,0) \,
 b_3 = f(0,1)-f(0,0) \,
 b_4 = f(0,0)-f(1,0)-f(0,1)+f(1,1) \,.

Результат билинейной интерполяции не зависит от порядка шагов. Возможно сначала интерполировать между известными точками вдоль оси ординат и затем, получив два вспомогательных значения, интерполировать между ними вдоль оси абсцисс. Результат будет тот же.

Очевидное расширение билинейной интерполяции на функции в трех переменных — трилинейная интерполяция.

[править] См. также


SEO Tools system wymiany linków wymiana linkami wymiana linkami wymiana linkami tanie kredyty gotówkowe kreatyna Plaza 3 star hotel Los Angeles krynica noclegi Sejm Tyk