getMat: discretize the continuous general symmetric map

Description Usage Arguments Details Value Author(s) References Examples

View source: R/RcppExports.R

Description

This function converts the continuous general symmetric map into a matrix

Usage

1
getMat(r, alpha, N_discr)

Arguments

r

double - control parameter

alpha

double - exponent

N_discr

integer - range of output matrix

Details

This routine is implemented in C++.

Value

matrix of type double - the corresponding matrix of range N

Author(s)

J.C. Lemm, P.v.W. Crommelin

References

S. Sprott, Chaos and Time-series analysis

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
Rcpp::NumericMatrix getMat(double r, double alpha, int N_discr){
  //grid is defined by N_discr values and therefore stepsize dx:
  double dx = 1.0/(N_discr-1.0);
  Rcpp::NumericVector codomain(N_discr);
  for(int i=0 ; i<N_discr ; i++){
    codomain[i] = gsm_cpp(i*dx,r,alpha);
  }
  //get indexposition on defined grid
  Rcpp::NumericVector index(N_discr);
  double diff(N_discr);
  for (int j=0 ; j<N_discr ; j++){
    double min_diff = 1.0; //1.0 is the maximum distance
    for (int i=0 ; i<N_discr ; i++){
      diff = abs(codomain[j] - i*dx);
      if(diff<=min_diff){
        min_diff = diff;
        index[j] = i;
        }
    }
  }
  Rcpp::NumericMatrix A(N_discr,N_discr);
  //consider "ROW MAJOR ORDER" (Wikipedia) to loop over arrays in c/c++
  //not implemented here
  for (int i=0 ; i<N_discr ; i++){
    for (int j=0 ; j<N_discr ; j++){
      if (j == index[i]){
        A(j,i) = 1.0;
      }else{
        A(j,i) = 0.0;
      }
    }
  }
  return(A);
}

PhilippVWC/myBayes documentation built on Oct. 2, 2020, 8:25 a.m.