Changeset 3615 in Sophya for trunk/SophyaLib/NTools/perandom.cc


Ignore:
Timestamp:
May 1, 2009, 1:34:31 PM (16 years ago)
Author:
cmv
Message:

Modifs relatives a l'introduction de RandomGeneratorInterface + delete de srandgen.c, cmv 01/05/2009

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/perandom.cc

    r3608 r3615  
    11#include "sopnamsp.h"
    22#include "machdefs.h"
     3#include <iostream>
    34#include "pexceptions.h"
     5#include "srandgen.h"
    46#include "perandom.h"
    5 #include "pemath.h"
    6 #include <iostream>
    77
    88
     
    290290}
    291291
    292 
    293 
    294 /////////////////////////////////////////////////////////////////
    295 /*
    296 **** Remarques sur complex< r_8 > ComplexGaussRan(double sig) ****
    297 
    298 --- variables gaussiennes x,y independantes
    299 x gaussien: pdf f(x) = 1/(sqrt(2Pi) Sx) exp(-(x-Mx)^2/(2 Sx^2))
    300 y gaussien: pdf f(y) = 1/(sqrt(2Pi) Sy) exp(-(y-My)^2/(2 Sy^2))
    301 x,y independants --> pdf f(x,y) = f(x) f(y)
    302 On a:
    303   <x>   = Integrate[x*f(x)]   = Mx
    304   <x^2> = Integrate[x^2*f(x)] = Mx^2 + Sx^2
    305 
    306 --- On cherche la pdf g(r,t) du module et de la phase
    307   x = r cos(t) ,  y = r sin(t)
    308   r=sqrt(x^2+y^2 , t=atan2(y,x)
    309   (r,t) --> (x,y): le Jacobien = r
    310 
    311   g(r,t) = r f(x,y) = r f(x) f(y)
    312          = r/(2Pi Sx Sy) exp(-(x-Mx)^2/(2 Sx^2)) exp(-(y-My)^2/(2 Sy^2))
    313 
    314 - Le cas general est complique
    315   (cf D.Pelat cours DEA "bruits et signaux" section 4.5)
    316 
    317 - Cas ou "Mx = My = 0" et "Sx = Sy = S"
    318   c'est la pdf du module et de la phase d'un nombre complexe
    319      dont les parties reelles et imaginaires sont independantes
    320      et sont distribuees selon des gaussiennes de variance S^2
    321   g(r,t) = r/(2Pi S^2) exp(-r^2/(2 S^2))
    322   La distribution de "r" est donc:
    323     g(r) = Integrate[g(r,t),{t,0,2Pi}]
    324          = r/S^2 exp(-r^2/(2 S^2))
    325   La distribution de "t" est donc:
    326     g(t) = Integrate[g(r,t),{r,0,Infinity}]
    327          = 1 / 2Pi  (distribution uniforme sur [0,2Pi[)
    328   Les variables aleatoires r,t sont independantes:
    329     g(r,t) = g(r) g(t)
    330 On a:
    331   <r>   = Integrate[r*g(r)]   = sqrt(PI/2)*S
    332   <r^2> = Integrate[r^2*g(r)] = 2*S^2
    333   <r^3> = Integrate[r^3*g(r)] = 3*sqrt(PI/2)*S^3
    334   <r^4> = Integrate[r^4*g(r)] = 8*S^4
    335 
    336 - Attention:
    337 La variable complexe "c = x+iy = r*exp(i*t)" ainsi definie verifie:
    338               <|c|^2> = <c c*> = <x^2+y^2> = <r^2> = 2 S^2
    339 Si on veut generer une variable complexe gaussienne telle que
    340      <c c*> = s^2 alors il faut prendre S = s/sqrt(2) comme argument
    341 
    342 */
Note: See TracChangeset for help on using the changeset viewer.