Learn R Programming

chebpol (version 1.3-952)

mlappx: Multilinear interpolation on a grid

Description

Multilinear interpolation on an arbitrary Cartesian product.

Usage

mlappx(val, grid, ...)

Arguments

val
Array or function. Function values on a grid, or the function itself. If it is the values, the dim-attribute must be appropriately set.
grid
A list. Each element is a vector of grid-points for a dimension. These need not be Chebyshev-knots, nor evenly spaced.
...
Further arguments to the function, if is.function(val).

Value

  • A function(x) defined on the hypercube, approximating the given function. The function yields values for arguments outside the hypercube as well, as a linear extension.

concept

Multilinear interpolation

Details

A call fun <- mlappx(val,grid) creates a multilinear interpolation on the grid. The value on the grid points will be exact, the value between the grid points is a convex combination of the values in the corners of the hypercube surrounding it.

If val is a function it will be evaluated on the grid.

Examples

Run this code
## evenly spaced grid-points
su <- seq(0,1,length.out=10)
## irregularly spaced grid-points
s <- su^3
## create approximation on the irregularly spaced grid
ml1 <- Vectorize(mlappx(exp,list(s)))
## test it, since exp is convex, the linear approximation lies above
## the exp between the grid points
ml1(su) - exp(su)

## multi linear approx
f <- function(x) exp(sum(x^2))
grid <- list(s,su)

ml2 <- mlappx(evalongrid(f,grid=grid),grid)
# an equivalent would be ml2 <- mlappx(f,grid)

a <- runif(2); ml2(a); f(a)
# we also get an approximation outside of the domain, of disputable quality
ml2(c(1,2)); f(c(1,2))

Run the code above in your browser using DataLab