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.