Description Usage Arguments Details Value Examples
Evaluate a function on a Chebyshev grid, or on a user-specified grid.
1 2 3 | evalongrid(fun, dims, intervals = NULL, ..., grid = NULL)
evalongridV(fun, dims, intervals = NULL, ..., grid = NULL)
|
fun |
Multivariate real-valued function to be evaluated. Must be
defined on the hypercube described by |
dims |
A vector of integers. The number of grid-points in each dimension. |
intervals |
A list. Each entry is a vector of length 2 with the lower and upper end of the interval in each dimension. |
... |
Further arguments to fun. |
grid |
Rather than specifying dims and intervals to get a Chebyshev
grid, you may specify your own |
The function fun should be a function(x,...), where
length(x) equals length(dims) (or length(grid)).
If grid is provided, fun is evaluated on each point in the
Cartesian product of the vectors in grid.
If intervals is not provided, it is assumed that the domain of the
function is the hypercube [-1,1] x [-1,1] x ... x [-1,1]. Thus, the
function is evaluated on a standard Chebyshev grid.
If intervals is provided, it should be a list with elements of
length 2, providing minimum and maximum for each dimension.
The grid itself may be produced by
expand.grid(chebknots(dims,intervals)), or
expand.grid(grid).
This function does the same as apply(expand.grid(grid),1,fun), but
it's faster and more memory-efficient for large grids because it does not
actually expand the grid.
The function evalongridV is for vectorized functions, i.e. those that
can take a matrix of column vectors as argument. It's equivalent to
fun(t(expand.grid(grid))).
An array with the value of fun on each grid point. The
dim attribute has been appropriately set for the grid. If fun
returns a vector, this will be the first dimension of the returned array.
1 2 3 4 5 6 7 8 9 10 11 12 13 | f <- function(x) {a <- sum(x^2); ifelse(a == 0,0,exp(-1/a))}
## Standard Chebyshev grid
evalongrid(f,dims=c(3,5))
## Then Chebyshev on [0,1] x [2,3]
evalongrid(f,dims=c(3,5),intervals=list(c(0,1),c(2,3)))
## And on my own grid
grid <- list(sort(rnorm(3)),sort(rnorm(5)))
evalongrid(f,grid=grid)
g <- ipol(f,grid=grid,method='fh')
evalongridV(g, grid=grid, threads=2)
## vector valued function
f <- function(x) c(prod(x),sum(x^2))
evalongrid(f,grid=grid)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.