# Multivariate interpolation

In numerical analysis, multivariate interpolation or multidimensional interpolation is interpolation on multivariate functions, having more than one variable or defined over a multi-dimensional domain. A common special case is bivariate interpolation or two-dimensional interpolation, based on two variables or two dimensions. When the variates are spatial coordinates, it is also known as spatial interpolation.
The function to be interpolated is known at given points $(x_{i},y_{i},z_{i},\dots )$ and the interpolation problem consists of yielding values at arbitrary points $(x,y,z,\dots )$.
Multivariate interpolation is particularly important in geostatistics, where it is used to create a digital elevation model from a set of points on the Earth's surface (for example, spot heights in a topographic survey or depths in a hydrographic survey).

## Regular grid

For function values known on a regular grid (having predetermined, not necessarily uniform, spacing), the following methods are available.

### Any dimension

* Nearest-neighbor interpolation
* n-linear interpolation (see bi- and trilinear interpolation and multilinear polynomial)
* n-cubic interpolation (see bi- and tricubic interpolation)
* Kriging
* Inverse distance weighting
* Natural neighbor interpolation
* Spline interpolation
* Radial basis function interpolation

### 2 dimensions

* Barnes interpolation
* Bilinear interpolation
* Bicubic interpolation
* Bézier surface
* Lanczos resampling
* Delaunay triangulation
Bitmap resampling is the application of 2D multivariate interpolation in image processing.
Three of the methods applied on the same dataset, from 25 values located at the black dots. The colours represent the interpolated values.
* Nearest neighbor
* Bilinear
* Bicubic
See also Padua points, for polynomial interpolation in two variables.

### 3 dimensions

* Trilinear interpolation
* Tricubic interpolation
See also bitmap resampling.

### Tensor product splines for N dimensions

Catmull-Rom splines can be easily generalized to any number of dimensions. The cubic Hermite spline article will remind you that $\mathrm {CINT} _{x}(f_{-1},f_{0},f_{1},f_{2})=\mathbf {b} (x)\cdot \left(f_{-1}f_{0}f_{1}f_{2}\right)$ for some 4-vector $\mathbf {b} (x)$ which is a function of x alone, where $f_{j}$ is the value at $j$ of the function to be interpolated. Rewrite this approximation as
    $\mathrm {CR} (x)=\sum _{i=-1}^{2}f_{i}b_{i}(x)$
This formula can be directly generalized to N dimensions:
    $\mathrm {CR} (x_{1},\dots ,x_{N})=\sum _{i_{1},\dots ,i_{N}=-1}^{2}f_{i_{1}\dots i_{N}}\prod _{j=1}^{N}b_{i_{j}}(x_{j})$
Note that similar generalizations can be made for other types of spline interpolations, including Hermite splines. In regards to efficiency, the general formula can in fact be computed as a composition of successive $\mathrm {CINT}$-type operations for any type of tensor product splines, as explained in the tricubic interpolation article. However, the fact remains that if there are $n$ terms in the 1-dimensional $\mathrm {CR}$-like summation, then there will be $n^{N}$ terms in the $N$-dimensional summation.

## Irregular grid (scattered data)

Schemes defined for scattered data on an irregular grid are more general. They should all work on a regular grid, typically reducing to another known method.
* Nearest-neighbor interpolation
* Triangulated irregular network-based natural neighbor
* Triangulated irregular network-based linear interpolation (a type of piecewise linear function)
** n-simplex (e.g. tetrahedron) interpolation (see barycentric coordinate system)
* Inverse distance weighting
* ABOS - approximation based on smoothing
* Kriging
* Gradient-enhanced kriging (GEK)
* Thin plate spline
* Polyharmonic spline (the thin-plate-spline is a special case of a polyharmonic spline)
* Radial basis function (Polyharmonic splines are a special case of radial basis functions with low degree polynomial terms)
* Least-squares spline
* Natural neighbour interpolation
Gridding is the process of converting irregularly spaced data to a regular grid (gridded data).