# fourierin_2d: Bivariate Fourier integrals In fourierin: Computes Numeric Fourier Integrals

## Description

It computes Fourier integrals for functions of one and two variables.

## Usage

 ```1 2 3``` ```fourierin_2d(f, lower_int, upper_int, lower_eval = NULL, upper_eval = NULL, const_adj, freq_adj, resolution = NULL, eval_grid = NULL, use_fft = TRUE) ```

## Arguments

 `f` function or a vector of size m. If a function is provided, it must be able to be evaluated at vectors. If a vector of values is provided, such evaluations must have been obtained on a regular grid and the Fourier integral is faster is m is a power of 2. `lower_int` Lower integration limit(s). `upper_int` Upper integration limit(s). `lower_eval` Lower evaluation limit(s). It can be NULL if an evaluation grid is provided. `upper_eval` Upper evaluation limit(s). It can be NULL if an evaluation grid is provided. `const_adj` Factor related to adjust definition of Fourier transform. It is usually equal to 0, -1 or 1. `freq_adj` Constant to adjust the exponent on the definition of the Fourier transform. It is usually equal to 1, -1, 2pi or -2pi. `resolution` A vector of integers (faster if powers of two) determining the resolution of the evaluation grid. Not required if f is a vector. `eval_grid` Optional matrix with d columns with the points where the Fourier integral will be evaluated. If it is provided, the FFT will not be used. `use_fft` Logical value specifying whether the FFT will be used.

## Value

If w is given, only the values of the Fourier integral are returned, otherwise, a list with three elements

 `w1` Evaluation grid for first entry `w2` Evaluation grid for second entry `values` m1 x m2 matrix of complex numbers, corresponding to the evaluations of the integral

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61``` ```##--- Recovering std. normal from its characteristic function ----- library(fourierin) ##-Parameters of bivariate normal distribution mu <- c(-1, 1) sig <- matrix(c(3, -1, -1, 2), 2, 2) ##-Multivariate normal density ##-x is n x d f <- function(x) { ##-Auxiliar values d <- ncol(x) z <- sweep(x, 2, mu, "-") ##-Get numerator and denominator of normal density num <- exp(-0.5*rowSums(z * (z %*% solve(sig)))) denom <- sqrt((2*pi)^d*det(sig)) return(num/denom) } ##-Characteristic function ##-s is n x d phi <- function(s) { complex(modulus = exp(- 0.5*rowSums(s*(s %*% sig))), argument = s %*% mu) } ##-Approximate cf using Fourier integrals eval <- fourierin_2d(f, lower_int = c(-8, -6), upper_int = c(6, 8), lower_eval = c(-4, -4), upper_eval = c(4, 4), const_adj = 1, freq_adj = 1, resolution = c(128, 128)) ## Extract values t1 <- eval\$w1 t2 <- eval\$w2 t <- as.matrix(expand.grid(t1 = t1, t2 = t2)) approx <- eval\$values true <- matrix(phi(t), 128, 128) # Compute true values ##-This is a section of the characteristic functions i <- 65 plot(t2, Re(approx[i, ]), type = "l", col = 2, ylab = "", xlab = expression(t), main = expression(paste("Real part section at ", t, "= 0"))) lines(t2, Re(true[i, ]), col = 3) legend("topleft", legend = c("true", "approximation"), col = 3:2, lwd = 1) ##-Another section, now of the imaginary part plot(t1, Im(approx[, i]), type = "l", col = 2, ylab = "", xlab = expression(t), main = expression(paste("Imaginary part section at ", t, "= 0"))) lines(t1, Im(true[, i]), col = 3) legend("topleft", legend = c("true", "approximation"), col = 3:2, lwd = 1) ```

fourierin documentation built on May 1, 2019, 10:57 p.m.