Verdeling van willekeurige getallen

Moderators: dirkwb, Xilvo

Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
Reageer
Berichten: 555

Verdeling van willekeurige getallen

Hoi,

Ik ben me er nu al 2 dagen het hoofd over aan het breken hoe ik random getallen volgens een bepaalde verdeling moet genereren.

Bij een simulatie die ik moet uitvoeren zal er na een botsing een nieuwe snelheid aan een deeltje gegeven worden welke moet voldoen aan de verdeling
\(f(v_x,v_y,T)=Cv_x\exp \left( \frac{v^2}{2T}\right)\)
(1)

Deze verdeling lijkt erg veel op een normale verdeling.

Ook zo'n verdeling heb ik nodig in een ander deel. Daarvoor heb ik gekeken naar de Box-Muller transformatie. Samen met een boek(zie pdf voor uittreksel) voor verdere uitleg (en een stap voor stap afleiding in het normale geval) ben ik er dan vrij vlug uitgekomen.

Bij (1) kan ik dat niet meteen gebruiken, volgens mij zelfs in z'n geheel niet.

Ik kan stellen dat (T is een parameter)
\(P(v_x,v_y)dv_xdv_y=Cv_x\exp \left( \frac{v^2}{2T}\right) dv_xdv_y=Cv^2\cos\phi\exp \left( \frac{v^2}{2T}\right)dvdv\phi=P(v,\phi )dvd\phi\)
Maar dan kan ik de verdere methode niet gebruiken volgens mij. Omdat ik nog steeds met 2 variabelen zit.

Kan ik random getallen genereren volgens (1) deze methode?

Zo niet, is er een methode die redelijk vlug is die dat kan?

Want ik zal uiteindelijk veel botsingen moeten simuleren.

P.s. Ik wist niet zeker of dit bij kanstheorie thuishoorde dus heb het hier maar geplaatst

Joris
Bijlagen
Appendix.pdf
(165.17 KiB) 89 keer gedownload

Gebruikersavatar
Berichten: 5.609

Re: Verdeling van willekeurige getallen

JorisL schreef: do 04 apr 2013, 22:57Ik ben me er nu al 2 dagen het hoofd over aan het breken hoe ik random getallen volgens een bepaalde verdeling moet genereren.

Bij een simulatie die ik moet uitvoeren zal er na een botsing een nieuwe snelheid aan een deeltje gegeven worden welke moet voldoen aan de verdeling
\(f(v_x,v_y,T)=Cv_x\exp \left( \frac{v^2}{2T}\right)\)
(1)
Aangezien je f moet normaliseren, maken die
\(Cv_x\)
niet uit. (Als die
\(C\)
een normalisatiefactor is, dan is
\(v_x\)
automatisch irrelevant.)

Bijgevolg is f normaal verdeeld met gemiddelde 0 en variantie T, je kunt dus
\(v\)
sampelen door een een waarde
\(U_1\)
en
\(U_2\)
te sampelen uit een uniform verdeelde [0, 1):
\(v = T \sqrt{-2 \ln U_1} \cos(2 \pi U_2)\)
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-

Berichten: 555

Re: Verdeling van willekeurige getallen

\(v_x\)
hoort niet bij C. C is de normalisatie factor op zich.

Als ik nu een 1D systeem bekijk kom ik terug op een Rayleigh verdeling waarvoor ik de inversie methode kan toepassen.

Had de prof ook al gemaild, enkele dagen geleden. Daaruit bleek dat ik op die manier ook voor 2D systemen te werk kon door eerst de y-component als normaal verdeeld te bepalen, daarna inversie voor de x-component.

Gebruikersavatar
Berichten: 5.609

Re: Verdeling van willekeurige getallen

\(v_x\)
hoort niet bij C. C is de normalisatie factor op zich.
Maakt niet uit. Als ik een willekeurige distributie neem, vermenigvuldig met tien miljoen miljard en daarna weer normaliseer, krijg ik dezelfde distributie als ik gewoon zou normaliseren.

Dus of er nu
\(C\)
,
\(Cv_x\)
of
\(10000Cv_x\)
staat, het is net hetzelfde. Ze zijn toch onafhankelijk van
\(v\)
en maken dus niet uit voor de distributie van
\(v\)
.

Dat, of ik moet je verkeerd begrijpen.

Bedoel je eventueel dat de verdeling van
\(v_x\)
en
\(v_y\)
als volgt is en je een punt (
\(v_x\)
,
\(v_y\)
) wil sampelen?
\(P(v_x,v_y|T)=Cv_x\exp \left( \frac{v_x^2+v_y^2}{2T}\right)dv_x dv_y \)
dan kun je beter eerst
\(v_y\)
sampelen:
\(P(v_y|T)= dv_y \displaystyle\int_{-\infty}^\infty Cv_x\exp \left( \frac{v_x^2+v_y^2}{2T}\right)dv_x \)
\(P(v_y|T)= dv_y C'\exp \left( \frac{v_y^2}{2T}\right) \displaystyle\int_{-\infty}^\infty v_x\exp \left( \frac{v_x^2}{2T}\right)dv_x \)
\(P(v_y|T)= dv_y C'\exp \left( \frac{v_y^2}{2T}\right)\)
Dit is gewoon een normale verdeling.

Daarna proberen
\(v_x\)
te samplen:
\(P(v_x|v_y,T)= Cv_x\exp \left( \frac{v_x^2+v_y^2}{2T}\right)dv_x\)
Maar vermits je distributie negatief wordt, is er een randvoorwaarde die je me waarschijnlijk bent vergeten te vertellen. :D

Anyways, als ik vergeet nog naar dit topic te kijken, bekijk het volgende eens: http://en.wikipedia....tings_algorithm

Het algoritme kan sampelen uit alle distributies, maar kan misschien al te traag voor je zijn.
What it all comes down to, is that I haven't got it all figured out just yet

And I've got one hand in my pocket and the other one is giving the peace sign

-Alanis Morisette-

Reageer