Трилинейная интерполяция — метод многомерной интерполяции в трёхмерном евклидовом пространстве. Линейно аппроксимирует значение функции
f
{\displaystyle f}
в точке
(
x
,
y
,
z
)
{\displaystyle (x,y,z)}
, используя известные значения в окружающих точках.
Трилинейная интерполяция часто используется в численном анализе и машинной графике[источник не указан 4290 дней ] .
Сравнение с линейной и билинейной интерполяцией
править
Трилинейная интерполяция является расширением линейной интерполяции , действующей в пространстве с размерностью
D
=
1
{\displaystyle D=1}
, и билинейной интерполяции , действующей в пространстве с размерностью
D
=
2
{\displaystyle D=2}
, на пространство размерности
D
=
3
{\displaystyle D=3}
. Для того чтобы интерполировать значения функции в точке
(
x
,
y
,
z
)
{\displaystyle (x,y,z)}
, необходимо знать значения
f
{\displaystyle f}
в 8 смежных точках, окружающих
(
x
,
y
,
z
)
{\displaystyle (x,y,z)}
.
Интерполяция действительной функции
править
Допустим, требуется интерполировать значение функции
f
{\displaystyle f}
в точке
(
x
,
y
,
z
)
{\displaystyle (x,y,z)}
. Пусть даны значения функции
f
{\displaystyle f}
в окружающих точках
(
x
i
,
y
j
,
z
k
)
{\displaystyle (x_{i},y_{j},z_{k})}
, где
i
=
1
,
2
{\displaystyle i=1,2}
,
j
=
1
,
2
{\displaystyle j=1,2}
,
k
=
1
,
2
{\displaystyle k=1,2}
, причем
x
1
<
x
<
x
2
{\displaystyle x_{1}<x<x_{2}}
,
y
1
<
y
<
y
2
{\displaystyle y_{1}<y<y_{2}}
,
z
1
<
z
<
z
2
{\displaystyle z_{1}<z<z_{2}}
. Последовательно проводя линейную интерполяцию для каждого измерения, можно получить следующую формулу:
f
(
x
,
y
,
z
)
≈
f
(
x
1
,
y
1
,
z
1
)
(
x
2
−
x
1
)
(
y
2
−
y
1
)
(
z
2
−
z
1
)
(
x
2
−
x
)
(
y
2
−
y
)
(
z
2
−
z
)
+
+
f
(
x
1
,
y
1
,
z
2
)
(
x
2
−
x
1
)
(
y
2
−
y
1
)
(
z
2
−
z
1
)
(
x
2
−
x
)
(
y
2
−
y
)
(
z
−
z
1
)
+
+
f
(
x
1
,
y
2
,
z
1
)
(
x
2
−
x
1
)
(
y
2
−
y
1
)
(
z
2
−
z
1
)
(
x
2
−
x
)
(
y
−
y
1
)
(
z
2
−
z
)
+
+
f
(
x
1
,
y
2
,
z
2
)
(
x
2
−
x
1
)
(
y
2
−
y
1
)
(
z
2
−
z
1
)
(
x
2
−
x
)
(
y
−
y
1
)
(
z
−
z
1
)
+
+
f
(
x
2
,
y
1
,
z
1
)
(
x
2
−
x
1
)
(
y
2
−
y
1
)
(
z
2
−
z
1
)
(
x
−
x
1
)
(
y
2
−
y
)
(
z
2
−
z
)
+
+
f
(
x
2
,
y
1
,
z
2
)
(
x
2
−
x
1
)
(
y
2
−
y
1
)
(
z
2
−
z
1
)
(
x
−
x
1
)
(
y
2
−
y
)
(
z
−
z
1
)
+
+
f
(
x
2
,
y
2
,
z
1
)
(
x
2
−
x
1
)
(
y
2
−
y
1
)
(
z
2
−
z
1
)
(
x
−
x
1
)
(
y
−
y
1
)
(
z
2
−
z
)
+
+
f
(
x
2
,
y
2
,
z
2
)
(
x
2
−
x
1
)
(
y
2
−
y
1
)
(
z
2
−
z
1
)
(
x
−
x
1
)
(
y
−
y
1
)
(
z
−
z
1
)
.
{\displaystyle {\begin{aligned}f(x,y,z)&\approx {\frac {f(x_{1},y_{1},z_{1})}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}(x_{2}-x)(y_{2}-y)(z_{2}-z)+\\&+{\frac {f(x_{1},y_{1},z_{2})}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}(x_{2}-x)(y_{2}-y)(z-z_{1})+\\&+{\frac {f(x_{1},y_{2},z_{1})}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}(x_{2}-x)(y-y_{1})(z_{2}-z)+\\&+{\frac {f(x_{1},y_{2},z_{2})}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}(x_{2}-x)(y-y_{1})(z-z_{1})+\\&+{\frac {f(x_{2},y_{1},z_{1})}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}(x-x_{1})(y_{2}-y)(z_{2}-z)+\\&+{\frac {f(x_{2},y_{1},z_{2})}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}(x-x_{1})(y_{2}-y)(z-z_{1})+\\&+{\frac {f(x_{2},y_{2},z_{1})}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}(x-x_{1})(y-y_{1})(z_{2}-z)+\\&+{\frac {f(x_{2},y_{2},z_{2})}{(x_{2}-x_{1})(y_{2}-y_{1})(z_{2}-z_{1})}}(x-x_{1})(y-y_{1})(z-z_{1}).\end{aligned}}}
В частности, в единичном кубе (
x
1
=
y
1
=
z
1
=
0
,
x
2
=
y
2
=
z
2
=
1
{\displaystyle x_{1}=y_{1}=z_{1}=0,\quad x_{2}=y_{2}=z_{2}=1}
):
f
(
x
,
y
,
z
)
≈
f
(
0
,
0
,
0
)
⋅
(
1
−
x
)
(
1
−
y
)
(
1
−
z
)
+
+
f
(
0
,
0
,
1
)
⋅
(
1
−
x
)
(
1
−
y
)
z
+
+
f
(
0
,
1
,
0
)
⋅
(
1
−
x
)
y
(
1
−
z
)
+
+
f
(
0
,
1
,
1
)
⋅
(
1
−
x
)
y
z
+
+
f
(
1
,
0
,
0
)
⋅
x
(
1
−
y
)
(
1
−
z
)
+
+
f
(
1
,
0
,
1
)
⋅
x
(
1
−
y
)
z
+
+
f
(
1
,
1
,
0
)
⋅
x
y
(
1
−
z
)
+
+
f
(
1
,
1
,
1
)
⋅
x
y
z
.
{\displaystyle {\begin{aligned}f(x,y,z)&\approx f(0,0,0)\cdot (1-x)(1-y)(1-z)+\\&+f(0,0,1)\cdot (1-x)(1-y)z+\\&+f(0,1,0)\cdot (1-x)y(1-z)+\\&+f(0,1,1)\cdot (1-x)yz+\\&+f(1,0,0)\cdot x(1-y)(1-z)+\\&+f(1,0,1)\cdot x(1-y)z+\\&+f(1,1,0)\cdot xy(1-z)+\\&+f(1,1,1)\cdot xyz.\end{aligned}}}