Document

advertisement
6. Ders
Kabul-Red Yöntemi
X
rasgele
değişkenin
olasılık
yoğunluk
fonksiyonu f ve aldığı değerler kümesi D olsun. V rasgele
değişkenin olasılık yoğunluk g ve aldığı değerlerin kümesi
D olmak üzere V sayıları kolayca üretilebilsin. a  0 sabiti ve
x  D için
f ( x)  a  g( x)
koşulu sağlansın. Bu durumda aşağıdaki algoritma ile olasılık
yoğunluk fonksiyonu f olan dağılımından sayı üretilebilir.
Algoritma
1) V
sayısı olasılık yoğunluk fonksiyonu
g
olan
dağılımından üretilsin
2) V ’den bağımsız olarak U ~ U ( 0,1) üretilsin.
U  a  g (V )  f (V ) ise X  V kabul edilsin yani bir X sayısı
üretilmiş olsun, aksi durumda reddedilsin yani 1. adıma
geçilsin (başka bir ifade ile Y ~ U (0, a  g (V )) üretilsin.
Y  f (V ) ise X kabul edilsin, aksi durumda reddedilsin.)
1
Yukarıdaki ile üretilen X sayıları için,
P X  x  PV  x Uag(V )  f (V )



P V  x, U 
x
f (V )
ag ( V )

0
(

PU 
f (V )
ag (V )
 du)g (v)dv

f (V )
ag ( V )

0
f (V )
ag (V )
 (  du)g (v)dv


x

1
f (v)dv
a 

1
f (v)dv
a 
x

 f (v)dv

olmak üzere, üretilen sayılar olasılık yoğunluk fonksiyonu f
olan dağılımdandır.
Olasılık yoğunluk fonksiyonu f olan dağılımdan X
sayılarını üretmek için yukarıdaki algoritmayı aşağıdaki gibi
de yazabiliriz.
1) Birbirinden bağımsız olarak V ~ g ve U ~ U (0,1) üretilsin.
2) Eğer U 
f (V )
ise X  V olsun ve X sayısı çıkılsın.
ag (V )
2
Örnek: X rasgele değişkenin olasılık yoğunluk fonksiyonu
 2 x(2  x)
f ( x)   
0
, 0< x2
, d.y.
olsun, uygun bir g ( x ) fonksiyonu da
 21
g( x)  
0
, 0< x 2
, d.y.
şeklinde seçilsin. Bu durumda a  2 için f ( x)  2 g ( x)
( x  (0,2) ) dır. Buna göre algoritma aşağıdaki gibi olacaktır.
f(x)
1
1
2
x
1. U ~ U (0,1) dağılımından bir U 1 sayısı üretilip V  2U1
alınır.
U(0,1) dağılımından bir U 2 sayısı üretilir.
2. Eğer U 2 
2

V (2  V )
yani U 2  2 V (2  V ) ise
1
2. 2
X  V alınır ve X sayısı çıkılır.
3
Yukarıdaki algoritmaya dayalı, BASIC programlama dilinde
aşağıdaki program yazılabilir.
X=2*RND
IF RND < (2/3.14)*SQR(X*(2-X)) THEN PRINT X
Bilgisayar programında V sayısını X ile göstermek ( X
adresine yazdırmak) ikinci adımda kolaylık sağlamaktadır.
Karışıklığa yol açmadığı takdirde algoritmanın birinci
adımında g olasılık yoğunluk fonksiyonuna sahip dağılımdan
üretilen V sayısı yerine X yazılabilir. Buna göre algoritma
aşağıdaki şekli alır.
1) Birbirinden bağımsız olarak X ~ g ve U ~ U (0,1)
üretilir.
2) Eğer U 
f (X )
ise X kabul edilir aksi halde red
ag ( X )
edilir.
Kolayca sayı üretilebilen yardımcı dağılımın olasılık yoğunluk
fonksiyonu olan g fonksiyonu f fonksiyonuna ne kadar çok
benziyorsa ve grafikleri birbirine yakınsa simülasyon zamanı
kısadır, red olunmalar o kadar az olur. g fonksiyonu
f ( x)
seçildikten sonra a sabiti x  D için a 
olacak
g ( x)
f ( x)
şekilde ve
değerleri bire yakın olacak şekilde
ag ( x)
seçilmelidir. Bu şartlar altında g seçildikten sonra a sabiti
f ( x)
a  sup
xD g ( x )
f ( x)
olarak seçilebilir (mevcut olduğu taktirde a  max
xD g ( x)
olarak seçilebilir).
4
Yukarıdaki örnekte sayı üretilmek istenen dağılımın
olasılık yoğunluk fonksiyonu,
 2 x(2  x)
f ( x)   
0
, 0< x2
, d.y.
ve yardımcı dağılımın olasılık yoğunluk fonksiyonu
 21
, 0< x 2
g( x)  
, d.y.
0
dır.
f ( x)
2
2
x(2  x)
g ( x)

olmak üzere, maksimum değerini x  1’de almaktadır.
f (1) 4
olarak seçilirse algoritmadaki Uag ( X )  f ( X )
a

g (1) 
eşitsizliği
U  X (2  X )
biçiminde olur. Buna göre
algoritma:
1) Birbirinden bağımsız
U ~ U (0,1) üretilir.
olarak
X ~ U (0,2)
ve
2) Eğer U  X (2  X ) ise X kabul edilir aksi halde
red edilir.
Buna göre BASIC deyimleri:
X=2*RND
IF RND < SQR(X*(2-X)) THEN PRINT X
Şeklindedir. Bu algoritma (program) ile bir öncekini
karşılaştırmak amacıyla her ikisi ile üretilen 100’er tane X
sayısı için döngü sayılarını gözleyiniz.
5
Örnek:
N (0,1) standart normal dağılımdan sayı üretilmek
istensin. X ~ N (0,1) olmak üzere
1
f ( x) 
2
e

x2
2
, -  x  
dır. Kolayca sayı üretilebilen bir dağılım olarak Cauchy
dağılımı seçilirse
1
g ( x) 
, -  x  
 (1  x 2 )
dır. Buna göre
x2
f ( x)


1 x2 e 2
g ( x)
2


ifadesi maksimum değerini x  1 değerlerinde almak üzere,
f ( x)
2
a  max

xR g ( x )
e
olur. İlgili algoritma ve BASIC dilindeki bilgisayar programı
aşağıdaki gibidir:
1) Bağımsız olarak X , Cauchy dağılımından ve U,
U (0,1) dağılımdan üretilir.
2) Eğer U 



e
1 X 2 e
4
X2
2
ise X kabul edilir aksi
halde red edilir.
X=TAN(3.14*(RND-0.5))
IF RND <SQR(EXP(1)/4)*(1+X^2)*EXP(-X^2/2)
THEN PRINT X
6
Örnek:
Olasılık yoğunluk fonksiyonu
 1 x2

 2 e 2
, x0
f ( x)  

, d . y.
0
olan dağılımdan sayı üretilmek istensin. Dikkat edilirse bu
dağılım standart normal dağılımın sağ yarısıdır. Bu dağılıma
sahip rasgele değişkeni X ile gösterelim.
Kabul-red yöntemine göre bu dağılımdan sayı üretmek
için olasılık yoğunluk fonksiyonu bu dağılımınkine benzeyen
ve kolayca sayı üretilebilen bir dağılım olarak   1
parametreli üstel dağılım seçilsin. Buna göre,
g( x)  e  x , x  0
dır.
a  max
x 0
f ( x)
g ( x)
 max
x 0
f ( x)
g ( x)
olmak üzere x  1 değerinde
Bu durumda a 
f (1)
g (1)

2

2

e
 12 ( x 2  2 x )
maksimum değerine ulaşır.
1
e 2 değerini alır ve birbirinden
bağımsız olarak üretilen X ~ g ve U ~ U (0,1) sayıları için
U
f ( x)
a. g ( x )
yani U  e
 12 ( x 1) 2
ise X kabul edilir. Aşağıdaki
program ile bu dağılımdan sayı üretilebilir.
X= -LOG(RND)
IF RND < EXP (-(X-1)^2) THEN PRINT X
Bu dağılımdan üretilen sayılar kullanılarak standart normal
dağılımdan da sayı üretilebilir. Bu amaçla yazılan bilgisayar
programı aşağıda verilmiştir.
X= -LOG(RND)
IF RND>EXP (-(X-1)^2) THEN GOTO 10
IF RND < 0.5 THEN PRINT X ELSE PRINT –X
10
7
Örnek: Standart normal dağılımın bir d ( d  0 ) sayısının
sağında kalan kısmından (kuyruğundan) sayı üretme
problemini ele alalım. Başka bir ifade ile olasılık yoğunluk
fonksiyonu
1 2
ce  2 x
, xd
f ( x)  
0
, d.y.
olan dağılımdan sayı üretilmek istensin ( c sabiti f bir
olasılık yoğunluk fonksiyonu olacak şekildedir). Kolayca sayı
üretilebilecek yardımcı dağılım olarak ötelenmiş üstel dağılım,
yani olasılık yoğunluk fonksiyonu
e  x  d , x  d
g ( x)  
, d.y.
0
olan dağılım seçilmiş olsun.
x2
 x
f ( x)
 ce  d e 2
g ( x)
x2
olmak üzere, 
 x ifadesi x  1 için artan x  1 için
2
azalan olduğundan, 0  d  1 , için
f ( x) f (1)
a  max

 ce d e1 / 2
x  d g ( x)
g (1)
ve d  1 için
d2

f ( x) f (d )
a  max

 ce 2
x d g ( x)
g (d )
dır. Buna göre algoritmada yer alan Uag ( X )  f ( X )
eşitsizliği, 0  d  1 durumunda
U e
1
 ( X 1) 2
2
ve d  1 durumunda
1
U  e2
( d 1) 2
e
1
 ( X 1) 2
2
biçiminde olacaktır. İlgili bilgisayar programı BASIC dilinde
aşağıdaki gibi olabilir.
8
INPUT D
X=-LOG(RND)+D
A=EXP(-0.5*(X-1)^2
IF D<=1 AND RND<A THEN PRINT X
IF D>1 AND RND<A*EXP(0.5*(D-1)^2)
THEN PRINT X
Şimdi başka bir yardımcı dağılım kullanarak sayı üretmeye
çalışalım. Bu amaçla   2 parametreli üstel dağılıma sahip
olan W rasgele değişkenini gözönüne alalım ve
Y  W  d2
rasgele değişkeninin
dağılımını
değişkeninin dağılım fonksiyonu
bulalım.
FY ( y )  P (Y  y )  P ( W  d 2  y )
y 2 d 2

1  e  2
2
2
 P(W  y  d )  

0
Y
rasgele
, yd
, y < d.
ve olasılık yoğunluk fonksiyonu
y2 d 2

 ye  2
, yd
g ( y)  

, y < d.
0
olarak bulunur. Yardımcı dağılım olarak Y ‘nin dağılımı yani
g olasılık yoğunluk fonksiyonuna sahip olan dağılım seçilsin.
Bu dağılımdan
F 1 (U )  d 2  2 ln( 1  U ) , 0  U  1
ters fonksiyonu kullanılarak sayı üretilebilir.

d2
2
f ( x)
e
c
g ( x)
x
olmak üzere,
9

a  max
xd
d2
2
f ( x)
e
c
g ( x)
d
olarak bulunur. Bu durumda, algoritmadaki
Uag ( X )  f ( X )
eşitsizliği
U
X
1
d
biçiminde olup, bilgisayar programı aşağıdaki gibi olacaktır.
X=SQR(d^2-2*LOG(RND))
IF RND * X /d <=1 THEN PRINT X
Örnek:
B(  , ) dağılımına sahip
X
rasgele değişkenin
olasılık yoğunluk fonksiyonu
f ( x) 
 (    )  1
x
(1  x )  1 , 0 
 ( )  ()
x 1
olmak üzere, B(   2,   4 ) olan Beta dağılımından sayı
üretelim. Bu durumda,
f ( x )  20 x (1  x ) 3 , 0  x  1
olur. g , U(0,1) düzgün dağılımın
olasılık
yoğunluk
fonksiyonu olmak üzere a sabitinin seçimi
f ( x)
a  max
 max 20 x(1  x) 3
x[ 0 ,1] g ( x)
x[ 0 ,1]
şeklinde yapılsın. Buna göre, 20 x(1  x) 3 in türevi alınıp sıfıra
eşitlenirse
x  1/ 4 olarak bulunur. Bu durumda
f (1 / 4 ) 135
a

değeri Uag ( X )  f ( X ) eşitsizliğinde
64
g (1 / 4 )
yazılırsa,
U
f (X )

ag ( X )
256
27
X (1  X ) 3
10
elde edilir. Bu dağılımdan sayı üretmek için algoritma ve
bilgisayar programı aşağıdaki gibidir.
1) Birbirinden bağımsız olarak X ~ g ve U ~ U ( 0 , 1)
üretilir.
2) Eğer U 
256
27
X (1  X ) 3 ise X kabul edilir, aksi halde
red edilir.
X=RND
IF RND < 256/27*X(1-X)^3 THEN PRINT X
Örnek:
(  , ) dağılımına sahip
X
rasgele değişkenin
olasılık yoğunluk fonksiyonu

x  1e 
x
f ( x) 
ile verilir.
, x0
 (  )
Özel olarak   3 / 2,   1 olan Gamma
dağılımından sayı üretilmek istensin. Bu durumda
2 x1 / 2 e  x
f ( x) 
, x0

olur. E ( X )  3 / 2 olmak üzere yardımcı dağılım olarak
  3 / 2 parametreli üstel dağılım seçilsin. Bu üstel dağılımın
olasılık yoğunluk fonksiyonu
 x
g( x)  2 e 3 , x  0
2
3
dır.
a  max
x 0
f ( x)
 max
x 0
g ( x)
3

x1 / 2 e
11
 3x
olmak üzere x  3 / 2 değerinde
3/ 2
ulaşır. Bu durumda, a  3
2  .e
algoritmadaki U 
U
f ( x)
maksimum değerine
g ( x)
değerini alır. Böylece
f (X )
eşitsizliği,
a.g ( X )
2e 1 / 2  X3
X e
3
sağlandığında   3 / 2
parametreli üstel dağılımdan üretilen X sayısı kabul edilir.
İlgili bilgisayar deyimleri aşağıdaki gibi olabilir.
biçiminde
olup,
bu
eşitsizlik
X= -3/2*LOG(RND)
IF RND< SQR (2*EXP(1)/3)*X^1/2*EXP(-X/3)
THEN PRINT X
12
Download