Description Usage Arguments Details Value Author(s) References Examples
This function converts the continuous general symmetric map into a matrix
1 | getMat(r, alpha, N_discr)
|
r |
double - control parameter |
alpha |
double - exponent |
N_discr |
integer - range of output matrix |
This routine is implemented in C++.
matrix of type double - the corresponding matrix of range N
J.C. Lemm, P.v.W. Crommelin
S. Sprott, Chaos and Time-series analysis
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);
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.