268
Le logiciel R - Maˆ ıtriser le langage
30
limit [0] = 100;
31
lenw [0] = 4 * limit [0];
32
iwork = new int [ limit [0]];
33
work = new double [ lenw [0]];
34
35
a [0] = rnorm (0.0 ,1.0);
// 1 de loi N(0, 1)
36
b [0] = M _ PI ; / / La constante π 3.141593 · · ·
37
ex [0] = runif (0.0 ,1.0); // 2 de loi U[0, 1]
38
39
/ / On calcule l’integrale
40
Rdqags (f , ex , a , b , epsabs , epsrel ,
41
result , abserr , neval , ier ,
42
limit , lenw , last ,
43
iwork , work );
44
45
/ / Le r´ esultat est stock´ e dans res[0]
46
res [0] = result [0];
47
48
PutRNGstate (); // ´ Ecrire la graine du g´ en´ erateur
49
50
/ / On lib` ere de la m´ emoire
51
delete [] ex , a , b , epsabs , epsrel , result , abserr ,
52
neval , ier , limit , lenw , last , iwork , work ;
53
}
54
55
// D´ efinition de la fonction ` a int´ egrer
56
void f( double * t , int n , void * ex ) {
57
int i;
58
double eps2 ;
59
eps2 = (( double * ) ex )[0];
60
for (i =0; i 61
t[i] = pnorm (t[i ]+ eps2 ,0.0 ,1.0 ,1 ,0);}
62
}
63 }
Les instructions de compilation de cette fonction afin d’obtenir un fichier
DLL sont les suivantes :
g++ -c integ.cpp -o integ.o -I"C:\Program Files\R\R-3.1.0\include"
g++ -shared -o integ.dll integ.o ^
-L"C:\Program Files\R\R-3.1.0\bin\i386" -lR
Précédent

- 301/701

Suivant