# Interpolation¶

## Overview¶

In the mathematics, interpolation can be viewed as an estimate, a method of constructing new data points within a discrete set of known data points. Here a variety of interpolation methods are implemented, including linear interpolation, cubic interpolation, and bicubic interpolation.

## Algorithm & Implementation¶

### Linear interpolation¶

There are two points \(A\left ( x_{A},y_{A} \right )\) and \(B\left ( x_{B},y_{B} \right )\) in the two-dimensional coordinate system. The linear interpolation calculates the value of :math: xepsilon left [ x_{B}, x_{B} right ] on the AB line. Its expression is:

The implementation is very simple and not elaborated here. For more information, please check out source code and `linear`_.

.._`linear`: https://en.wikipedia.org/wiki/Linear_interpolation

### Cubic interpolation¶

The cubic interpolation algorithm is in `cubic`_, and The cubic interpolation implementation is in source code.

.._`cubic`: https://www.paulinternet.nl/?page=bicubic

### Bicubic spline interpolation¶

The bicubic spline interpolation is an extension of cubic interpolation for interpolating data points on a two-dimensional regular grid. For more algorithm details, please see `bicubic`_. Its implementation is essential to perform interpolation according to the x-direction, and then to interpolate in the y-direction. Then the desired result can be obtained.

.._`bicubic`: https://en.wikipedia.org/wiki/Bicubic_interpolation

As shown in the figure below, the interpolation implementation includes 2 parts: init and calcu.

- The init mainly implements parameter pre-processing and some functions of cubic spline interpolation in x-direction.
- The calcu completes cubic spline interpolation in the x-direction according to the input x and results of the init, and then completes cubic spline interpolation in the y-direction according to the obtained result and the input y to obtain an output result.