Chapitre 6. Programmation en R
267
Vous pourrez aussi consulter avec profit le dossier nmath/ dans les sources
de R, disponibles `
a l’adresse http://svn.r-project.org/R/trunk/src/
nmath.
Nous pr´ esentons ci-dessous un code C/C++ disponible ` a l’adresse http://
biostatisticien.eu/springeR/integ.cpp permettant de calculer l’int´ egrale
suivante :
π
1
Φ(t + 2 )dt,
o` u 1 et 2 sont les r´ ealisations de deux variables al´ eatoires ind´ ependantes (respectivement normale et uniforme) et o` u Φ(·) d´ esigne la fonction de r´ epartition
d’une loi N(0, 1). Le seul int´ erˆ et de cet exemple est d’illustrer l’utilisation de
fontions de l’API R pour simuler des variables al´ eatoires, calculer une probabilit´ e ou encore effectuer un calcul d’int´ egration num´ erique.
1 # include
2 # include < Rmath .h >
3 extern "C" {
4
5
typedef void integr _ fn ( double * x , int n , void * ex );
6
void f( double * t , int n , void * ex );
7
8
void testintegral ( double * res ) {
9
10
/ / Fonction d’int´ egration num´ erique de l’API R
11
void Rdqags ( integr _ fn f , void * ex , double * a ,
12
double * b , double * epsabs ,
13
double * epsrel , double * result ,
14
double * abserr , int * neval ,
15
int * ier , int * limit , int * lenw ,
16
int * last , int * iwork , double * work );
17
18
GetRNGstate (); / / Lire la graine du g´ en´ erateur de R
19
20
double * a , * b , * epsabs , * epsrel , * result ,
21
* ex , * abserr , * work ;
22
int * last , * limit , * lenw , * ier , * neval , * iwork ;
23
24
ex = new double [1]; a = new double [1];
25
b = new double [1]; epsabs = new double [1];
26
epsrel = new double [1]; result = new double [1];
27
abserr = new double [1]; neval = new int [1];
28
ier = new int [1]; limit = new int [1];
29
lenw = new int [1]; last = new int [1];
267
Vous pourrez aussi consulter avec profit le dossier nmath/ dans les sources
de R, disponibles `
a l’adresse http://svn.r-project.org/R/trunk/src/
nmath.
Nous pr´ esentons ci-dessous un code C/C++ disponible ` a l’adresse http://
biostatisticien.eu/springeR/integ.cpp permettant de calculer l’int´ egrale
suivante :
π
1
Φ(t + 2 )dt,
o` u 1 et 2 sont les r´ ealisations de deux variables al´ eatoires ind´ ependantes (respectivement normale et uniforme) et o` u Φ(·) d´ esigne la fonction de r´ epartition
d’une loi N(0, 1). Le seul int´ erˆ et de cet exemple est d’illustrer l’utilisation de
fontions de l’API R pour simuler des variables al´ eatoires, calculer une probabilit´ e ou encore effectuer un calcul d’int´ egration num´ erique.
1 # include
2 # include < Rmath .h >
3 extern "C" {
4
5
typedef void integr _ fn ( double * x , int n , void * ex );
6
void f( double * t , int n , void * ex );
7
8
void testintegral ( double * res ) {
9
10
/ / Fonction d’int´ egration num´ erique de l’API R
11
void Rdqags ( integr _ fn f , void * ex , double * a ,
12
double * b , double * epsabs ,
13
double * epsrel , double * result ,
14
double * abserr , int * neval ,
15
int * ier , int * limit , int * lenw ,
16
int * last , int * iwork , double * work );
17
18
GetRNGstate (); / / Lire la graine du g´ en´ erateur de R
19
20
double * a , * b , * epsabs , * epsrel , * result ,
21
* ex , * abserr , * work ;
22
int * last , * limit , * lenw , * ier , * neval , * iwork ;
23
24
ex = new double [1]; a = new double [1];
25
b = new double [1]; epsabs = new double [1];
26
epsrel = new double [1]; result = new double [1];
27
abserr = new double [1]; neval = new int [1];
28
ier = new int [1]; limit = new int [1];
29
lenw = new int [1]; last = new int [1];
