# Multivariate interpolation

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Multivariate_interpolation
> Markdown URL: https://mediated.wiki/source/Multivariate_interpolation.md
> Source: https://en.wikipedia.org/wiki/Multivariate_interpolation
> Source revision: 1325336002
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

Interpolation on functions of more than one variable

In [numerical analysis](/source/Numerical_analysis), **multivariate interpolation** or **multidimensional interpolation** is [interpolation](/source/Interpolation) on *[multivariate functions](/source/Multivariate_function)*, having more than one variable or defined over a [multi-dimensional](/source/Multi-dimensional) domain.[1] A common special case is **bivariate interpolation** or **two-dimensional interpolation**, based on [two variables](/source/Bivariate_function) or [two dimensions](/source/Two-dimensional_space). When the variates are [spatial coordinates](/source/Spatial_coordinate), it is also known as **spatial interpolation**.

The function to be interpolated is known at given points ( x i , y i , z i , … ) {\displaystyle (x_{i},y_{i},z_{i},\dots )} and the interpolation problem consists of yielding values at arbitrary points ( x , y , z , … ) {\displaystyle (x,y,z,\dots )} .

Multivariate interpolation is particularly important in [geostatistics](/source/Geostatistics), where it is used to create a [digital elevation model](/source/Digital_elevation_model) from a set of points on the Earth's surface (for example, spot heights in a [topographic survey](/source/Topographic_survey) or depths in a [hydrographic survey](/source/Hydrographic_survey)).

## Regular grid

Comparison of  some 1- and 2-dimensional interpolations.
Black and red/yellow/green/blue dots correspond to the interpolated point and neighbouring samples, respectively.
Their heights above the ground correspond to their values.

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

### Any dimension

- [Nearest-neighbor interpolation](/source/Nearest-neighbor_interpolation)

- n-linear interpolation (see [bi-](/source/Bilinear_interpolation) and [trilinear interpolation](/source/Trilinear_interpolation) and [multilinear polynomial](/source/Multilinear_polynomial))

- n-cubic interpolation (see [bi-](/source/Bicubic_interpolation) and [tricubic interpolation](/source/Tricubic_interpolation))

- [Kriging](/source/Kriging)

- [Inverse distance weighting](/source/Inverse_distance_weighting)

- [Natural-neighbor interpolation](/source/Natural-neighbor_interpolation)

- [Spline interpolation](/source/Spline_interpolation)

- [Radial basis function interpolation](/source/Radial_basis_function_interpolation)

### 2 dimensions

- [Barnes interpolation](/source/Barnes_interpolation)

- [Bilinear interpolation](/source/Bilinear_interpolation)

- [Bicubic interpolation](/source/Bicubic_interpolation)

- [Bézier surface](/source/B%C3%A9zier_surface)

- [Lanczos resampling](/source/Lanczos_resampling)

- [Delaunay triangulation](/source/Delaunay_triangulation)

[Bitmap resampling](/source/Resampling_(bitmap)) is the application of 2D multivariate interpolation in [image processing](/source/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](/source/Padua_points), for [polynomial interpolation](/source/Polynomial_interpolation) in two variables.

### 3 dimensions

- [Trilinear interpolation](/source/Trilinear_interpolation)

- [Tricubic interpolation](/source/Tricubic_interpolation)

See also [bitmap resampling](/source/Resampling_(bitmap)).

### Tensor product splines for *N* dimensions

Catmull–Rom splines can be easily generalized to any number of dimensions. The [cubic Hermite spline](/source/Cubic_Hermite_spline) article will remind you that C I N T x ( f − 1 , f 0 , f 1 , f 2 ) = b ( x ) ⋅ ( f − 1 f 0 f 1 f 2 ) {\displaystyle \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 b ( x ) {\displaystyle \mathbf {b} (x)} which is a function of *x* alone, where f j {\displaystyle f_{j}} is the value at j {\displaystyle j} of the function to be interpolated. Rewrite this approximation as

- C R ( x ) = ∑ i = − 1 2 f i b i ( x ) {\displaystyle \mathrm {CR} (x)=\sum _{i=-1}^{2}f_{i}b_{i}(x)}

This formula can be directly generalized to N dimensions:[2]

- C R ( x 1 , … , x N ) = ∑ i 1 , … , i N = − 1 2 f i 1 … i N ∏ j = 1 N b i j ( x j ) {\displaystyle \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 C I N T {\displaystyle \mathrm {CINT} } -type operations for any type of tensor product splines, as explained in the [tricubic interpolation](/source/Tricubic_interpolation) article. However, the fact remains that if there are n {\displaystyle n} terms in the 1-dimensional C R {\displaystyle \mathrm {CR} } -like summation, then there will be n N {\displaystyle n^{N}} terms in the N {\displaystyle N} -dimensional summation.

## Irregular grid (scattered data)

Schemes defined for scattered data on an [irregular grid](/source/Irregular_grid) are more general. They should all work on a regular grid, typically reducing to another known method.

- [Nearest-neighbor interpolation](/source/Nearest-neighbor_interpolation)

- [Triangulated irregular network](/source/Triangulated_irregular_network)-based [natural neighbor](/source/Natural_neighbor)

- [Triangulated irregular network](/source/Triangulated_irregular_network)-based [linear interpolation](/source/Linear_interpolation) (a type of [piecewise linear function](/source/Piecewise_linear_function)) - n-[simplex](/source/Simplex) (e.g. tetrahedron) interpolation (see [barycentric coordinate system](/source/Barycentric_coordinate_system))

- [Inverse distance weighting](/source/Inverse_distance_weighting)

- [ABOS - approximation based on smoothing](https://surgeweb.mzf.cz/AOSIM/ABOS.htm)

- [Kriging](/source/Kriging)

- [Gradient-enhanced kriging](/source/Gradient-enhanced_kriging) (GEK)

- [Thin-plate spline](/source/Thin_plate_spline)

- [Polyharmonic spline](/source/Polyharmonic_spline) (The thin-plate spline is a special case of a polyharmonic spline.)

- [Radial basis function](/source/Radial_basis_function) ([Polyharmonic splines](/source/Polyharmonic_spline) are a special case of radial basis functions with low degree polynomial terms.)

- Least-squares [spline](/source/Spline_(mathematics))

- [Natural-neighbor interpolation](/source/Natural-neighbor_interpolation)

*Gridding* is the process of converting irregularly spaced data to a regular grid ([gridded data](/source/Gridded_data)).

## See also

- [Smoothing](/source/Smoothing)

- [Surface fitting](/source/Surface_fitting)

## Notes

1. **[^](#cite_ref-1)** Jetter, Kurt; Buhmann, Martin D.; Haussmann, Werner; Schaback, Robert; and Stöckler, Joachim: *Topics in Multivariate Approximation and Interpolation*, Elsevier, ISBN 0-444-51844-4 (2006)

1. **[^](#cite_ref-2)** [Two hierarchies of spline interpolations. Practical algorithms for multivariate higher order splines](https://arxiv.org/abs/0905.3564)

## External links

- [Example C++ code for several 1D, 2D and 3D spline interpolations (including Catmull-Rom splines).](http://chichi.lalescu.ro/splines.html)

- [Multi-dimensional Hermite Interpolation and Approximation](https://web.archive.org/web/20060915111500/http://www.ices.utexas.edu/CVC/papers/multidim.pdf), Prof. Chandrajit Bajaja, [Purdue University](/source/Purdue_University)

- [Python library containing 3D and 4D spline interpolation methods.](https://github.com/DurhamDecLab/ARBInterp)

---
Adapted from the Wikipedia article [Multivariate interpolation](https://en.wikipedia.org/wiki/Multivariate_interpolation) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Multivariate_interpolation?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
