Outils pour utilisateurs

Outils du site


wiki:projets:smartphone-geiger:box-muller

Écart quadratique moyen et vérification grâce à la méthode Box-Muller

Afin de déterminer si nous avons assez de mesures pour donner une valeur à l'utilisateur, nous devons calculer l'écart quadratique moyen de notre jeu de valeurs. Nous ferons cela en javascript, côté application.

\begin{align} {\rm moyenne} & = \frac{\sum_{n \geq i \geq 0} v_{i}}{n} \\ {\rm ecart_{i}} & = ({\rm moyenne} - v_{i})^2 \\ {\rm ecartQuadratiqueMoyen} & = \frac{\sqrt{\sum_{n \geq i \geq 0} {\rm ecart_{i}}}}{n} \end{align}

Pour vérifier que tout fonctionne correctement, nous utilisons un arduino pour générer des impulsions aléatoires suivant la méthode Box-Muller :

void setup() {
  Serial.begin(9600);
 
  pinMode(13, OUTPUT);
}
 
void oneSecondPulse(int nbCoups) {
  int s = 500/nbCoups;
  for (int i=0 ; i<nbCoups ; i++) {
    digitalWrite(13, HIGH);
    delay(s);
    digitalWrite(13, LOW);
    delay(s);
  } 
}
 
void loop() {
  float x, y;
  x = ((float) random(1000))/1000.0;
  y = ((float) random(1000))/1000.0;
  float z0, z1;
  z0 = sqrt(-2.0*log(x))*cos(2*PI*y);
  z1 = sqrt(-2.0*log(x))*sin(2*PI*y);
 
  oneSecondPulse(z0*5+20);
 
  //Serial.println(z0, DEC);
}

Attention ! Le RFduino fonctionne en 3.6 V, tandis que l'arduino uno fonctionne en 5 V, il faut donc utiliser un pont diviseur de tension.

wiki/projets/smartphone-geiger/box-muller.txt · Dernière modification: 2016/09/11 13:15 (modification externe)