• Nie Znaleziono Wyników

Generowanie ciągu liczb pseudolosowych o rozkładzie jednorodnym w kuli 3D.

N/A
N/A
Protected

Academic year: 2021

Share "Generowanie ciągu liczb pseudolosowych o rozkładzie jednorodnym w kuli 3D."

Copied!
4
0
0

Pełen tekst

(1)

Generowanie ciągu liczb pseudolosowych o rozkładzie jednorodnym w kuli 3D.

Tomasz Chwiej 11 czerwca 2019

1 Zadania do wykonania

1.1 Generator o rozkładzie jednorodnym U (0, 1)

1. Wylosować N = 2000 liczb pseudolowych z generatora multiplikatywnego

Xi = a Xi−1mod m (1)

które należy unormować

xi = Xi

m + 1.0 (2)

dla dwóch przypadków:

• U1(0, 1): a = 17, m = 213− 1, X0 = 10

• U2(0, 1): a = 85, m = 213− 1, X0 = 10

Dla każdego generatora należy utworzyć oddzielną funkcję, która powinna zwracać liczbę typu double tj. x∈ U(0, 1)

double gen_1(){

static long int x=10;

int a=...;

int c=...;

long int m=...;

x=(a*x+c) % m;

return x/(m+1.0);

}

Uwaga: w powyższym kodzie parametr static pozwala zachować w pamięci ostatnią wartość x pomiędzy wywołaniami funkcji.Wygenerowane liczby dla U1(0, 1) i U2(0, 1) zapisać w jednowy- miarowych n-elementowych tablicach a następnie korzystając z nich należy sporządzić dwuwy- miarowe wykresy kolejnych par: (xi, xi+1), (xi, xi+2), (xi, xi+3) dla obu generatorów.

2. Wylosować N = 2000 liczb pseudolowych z generatora multiplikatywnego U3(0, 1)

Xi= (1176· Xi−1+ 1476· Xi−2+ 1776· Xi−3) mod (232− 5) (3) i unormować. Na starcie można przyjąć X0 = X−1 = X−2= 10.

Sporządzić dwuwymiarowe wykresy kolejnych par: (xi, xi+1), (xi, xi+2),(xi, xi+3) dla generatora.

1

(2)

1.2 Rozkład jednorodny w kuli 3D: K3(0, 1)

1. Stosując metodę Boxa-Mullera należy utworzyć N = 2000 trzywymiarowych wektorów (⃗ri = [xi, yi, zi]) o rozkładzie normalnym

u1 ∈ U3(0, 1) (4)

u2 ∈ U3(0, 1) (5)

xi =

−2 ln(1 − u1) cos(2πu2) (6)

yi =

−2 ln(1 − u1) sin(2πu2) (7)

u3 ∈ U3(0, 1) (8)

u4 ∈ U3(0, 1) (9)

zi =

−2 ln(1 − u3) cos(2πu4) (10)

i znormalizować długości wektorów do 1 stosując normę euklidesową

⃗ri ⃗ri

∥⃗ri2

(11) Wygenerowane punkty w przestrzeni 3D powinny znajdować się teraz na powierzchni sfery.

Zapisać wektory do pliku i sporządzić przykładowy rysunek 3D pokazujący ich rozkład na sferze, np. w Gnuplocie (poniżej część skryptu generującego wykres 3D)

set xyplane -1 set border 4095

splot ’dane.dat’ u 1:2:3 w p

2. Dysponując rozkładem jednorodnym na sferze, dla każdego punktu (wektora w 3D) generujemy zmienną o rozkładzie jednomianowym hd(s) = d· sd−1, d = 3 (d określa liczbę wymiarów) i s∈ (0, 1):

ui ∈ U3(0, 1) (12)

si = (ui)1d (13)

ri = [si· xi, si· yi, si· zi] (14) Po wykonaniu powyższych czynności punkty ⃗ri powinny być rozłożone równomiernie w kuli.

Zapisać wektory ⃗ri do pliku i sporządzić wykres 3D jak dla sfery.

3. Sprawdzamy czy rozkład punktów w kuli jest jednorodny tj. czy gęstość losowanych punktów jest stała w obszarze kuli. W tym celu dzielimy promień kuli na K = 10 podprzedziałów o równej długości, a następnie dla każdego punktu określamy jego przynależność do konkretnego przedziału

∆ = 1

K (15)

j = (int)

(∥⃗ri2

)

+ 1 (indeks przedziału, j=1,2,...,K) (16)

nj + + (17)

Gęstość (gj) liczymy jako ilość liczb wpadających do danego przedziału podzieloną przez jego

(3)

objętość

Rj = ∆· j (18)

Rj−1 = ∆· (j − 1) (19)

Vj = 4

3πR3j (20)

Vj−1 = 4

3πR3j−1 (21)

gj = nj

Vj− Vj−1 (22)

Do pliku proszę zapisać wartości nj oraz gj dla: N = 2000 oraz N = 104 i N = 107. Różnice w wartościach g1 proszę skomentować w sprawozdaniu w oparciu o zmianę wartości n1 dla tych trzech serii danych.

Przykładowe wyniki:

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 gen 1, r=1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 gen 1, r=2

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 gen 1, r=3

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 gen 2, r=1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 gen 2, r=2

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 gen 2, r=3

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 gen 3, r=1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 gen 3, r=2

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 gen 3, r=3

Rysunek 1: Rozkłady przestrzenne par punktów: (xi, xi+1), (xi, xi+2), (xi, xi+2) (kolumny odpowied- nio: lewa, środkowa i prawa ), dla generatorów U1(0, 1) (wiersz górny), U2(0, 1) (wiersz środkowy) i U3(0, 1) (wiersz dolny).

(4)

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

’sfera.dat’ u 1:2:3

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

-1 -0.8-0.6-0.4-0.2 0 0.2 0.4 0.6 0.8 1

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

’kula.dat’ u 1:2:3

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

-1 -0.8-0.6-0.4-0.2 0 0.2 0.4 0.6 0.8 1

Rysunek 2: Rozkład punktów na sferze (lewy) i w kuli (prawy).

Cytaty

Powiązane dokumenty

Ciało porusza się pionowo w dół w jednorodnym polu grawitacyjnym o natężeniu g, przy czym opór powietrza jest proporcjonalny do prędkości:.. F ~ op =

Jaką drogę przebędzie on do chwili zatrzymania się, jeśli współczynnik tarcia krążka o lód wynosi f=0,1?.

Pokaż przebieg algorytmów wyszukiwania sekwencyjnego (indeks) oraz bez powtórzeń (kolejne przedziały) przy wyszukiwaniu wartości równej liczbie o indeksie równym

Korzystając z odpowiednich tabel statystycznych proszę sprawdzić czy nasza hipoteza jest prawdziwa na poziomie istotności α = 0.05 (α jest prawdopodobieństwem pierwszego ro-

W sprawozdaniu proszę zamieścić histogram pokazujący wartości n i /n dla każdego z podprze- działów, na tym samym rysunku proszę także zamieścić przebieg funkcji

Stąd wynika, że rozwartość trójkątowa zbioru E jest nie większa od rozwartości trójkątowej odcinka L... Последовательность alf

każdorazowo przed wejściem do (bloku) instrukcji sprawdzany jest warunek war i jeśli jego wartość jest true , wykonywane są instrukcje , w. przeciwnym przypadku następuje

Udowodnij, że metoda odwrotnej dystrybuanty umożliwia generowanie liczb pseudolosowych o zadanym rozkładzie. Zaimplementuj ją aby uzyskać próbki z trzech różnych