448
11. Metoda Monte Carlo i symulacja
program dla opisanego lu generatora (dla przykładu przyjęto niżej, że P = 231, /==2t« i że największą liczbą całkowitą w maszynie jest 231 —1): • *'
FUNCTfON RAND(T)
I=T*65539
I IFfT.LT.O)! = F+ 2147483647 -4- I RAND=I«.4656613 E-9 RETURN END
(a) Co robi instrukcja I w tym podprogramie? Jak można jeszcze przy spieszyć generowanie liczb, używając zastosowanej tu metody w danym programie?
(b) Napisać w Fortranie program, który, używając metody z powyższego podprogramu. oblicza j exdx prostą metodą Monte Carlo z § 11.3. Wziąć 25,100,225. 400 i 625
i>
punktów, przyjmując w każdym przypadku, że /0 = 123456789. Jak (w przybliżeniu! zależy błąd od liczby punktów'1
(c) Napisać w Fortranie program obliczający całkę z (b) metodą opisaną na końcu $ 11.3. Przyjąć w(x) = 1 +a + ^jc2. Użyć tylu punktów i takiego początkowego /„ jak w (b).
2. Napisać w Fortranie program, stosujący liczby losowe o rozkładzie prostokątnym do losowego przetasowania talii z 52 kart.
3. (a) Niech xt, x2, ..., xk będą niezależnymi zmiennymi losowymi o wartości oczekiwanej 0 i wariancji <r2. Niech będzie x~(xt, x3, .... xk)7, B=(bjj). Wykazać, że jeśli
y=Bx. _v=(>•,. >2.....>t)T.
to wartość oczekiwana iloczynu jyy jest równa elementowi (ij) macierzy o2BB Jest to tzw. macierz kowariancji dla y.
(b) Jak generować liczby losowe o danej (dodatnio określonej) macierzy kowariancji V. korzystając zc zwykłych niezależnych liczb losowych?