# bicubic: Bivariate Interpolation for Data on a Rectangular grid In akima: Interpolation of Irregularly and Regularly Spaced Data

## Description

The description in the Fortran code says:

This subroutine performs interpolation of a bivariate function, z(x,y), on a rectangular grid in the x-y plane. It is based on the revised Akima method.

In this subroutine, the interpolating function is a piecewise function composed of a set of bicubic (bivariate third-degree) polynomials, each applicable to a rectangle of the input grid in the x-y plane. Each polynomial is determined locally.

This subroutine has the accuracy of a bicubic polynomial, i.e., it interpolates accurately when all data points lie on a surface of a bicubic polynomial.

The grid lines can be unevenly spaced.

## Usage

 `1` ```bicubic(x, y, z, x0, y0) ```

## Arguments

 `x` a vector containing the `x` coordinates of the rectangular data grid. `y` a vector containing the `y` coordinates of the rectangular data grid. `z` a matrix containing the `z[i,j]` data values for the grid points (`x[i]`,`y[j]`). `x0` vector of `x` coordinates used to interpolate at. `y0` vector of `y` coordinates used to interpolate at.

## Details

This functiuon is a R interface to Akima's Rectangular-Grid-Data Fitting algorithm (TOMS 760). The algorithm has the accuracy of a bicubic (bivariate third-degree) polynomial.

## Value

This function produces a list of interpolated points:

 `x` vector of `x` coordinates. `y` vector of `y` coordinates. `z` vector of interpolated data `z`.

If you need an output grid, see `bicubic.grid`.

## Note

Use `interp` for the general case of irregular gridded data!

## References

Akima, H. (1996) Rectangular-Grid-Data Surface Fitting that Has the Accuracy of a Bicubic Polynomial, J. ACM 22(3), 357-361

`interp`, `bicubic.grid`
 ```1 2 3 4 5``` ```data(akima760) # interpolate at the diagonal of the grid [0,8]x[0,10] akima.bic <- bicubic(akima760\$x,akima760\$y,akima760\$z, seq(0,8,length=50), seq(0,10,length=50)) plot(sqrt(akima.bic\$x^2+akima.bic\$y^2), akima.bic\$z, type="l") ```