Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Методы Монте-Карло для параллельных вычислений. Учебное пособие
.pdf
Здесь pk(x1, x2, . . . , xk) — плотность распределения величины Xkпри
условии X1= x1, X2= x2, . . . , X
n−1
= x
. По известной теореме
n−1
умножения для условных плотностей,
p(x1, x2, . . . , xn) = p1(x1)p2(x1, x2) ×. . . × pn(x1, x2, . . . , xn).
Теперь для моделирования значения Xkпри известных X1, X2, . . . ,
X
по условной плотности распределения pkможно воспользоваться
k−1
одним из описанных в разделе 3.2 способов.
Метод исключения. Пусть плотность p(x1, x2, . . . , xn) распреде-
ления случайных величин X1, X2, . . . , Xnудовлетворяет условию
0 6 p(x1, x2, . . . , xn) 6 cg(x1, x2, . . . , xn),
где g(x1, x2, . . . , xn) также есть некоторая n-мерная плотность распределения. Рассматривая выбор точки с равномерным распределением в
области
F = {(x1, x2, . . . , xn, y): 0 6 y 6 p(x1, x2, . . . , xn)}
(n + 1)-мерного евклидова пространства, приходим к следующему ал-
горитму.
Алгоритм XIII
Метод исключения
Шаг 1. Получить вектор значений (X1, X2, . . . , Xn) из распределения с плотностью g(x1, x2, . . . , xn). Смоделировать значение
величины U с равномерным распределением в интервале (0, 1), затем
положить Y = U cg(X1, X2, . . . , Xn).
Шаг 2. Если оказалось верным неравенство
Y 6 p(X1, X2, . . . , Xn),
то алгоритм завершает работу и возвращает значения X1, X2, . . . , Xn,
в противном случае возвращаемся к шагу 1.
Метод функциональных преобразований. Данный метод основывается на следующем утверждении. Пусть случайные величины X1,
X2, . . . , Xn, Y1, Y2, . . . , Ynсвязаны соотношениями
Yk= gk(X1, X2, . . . , Xn), k = 1, 2, . . . , n;
61

преобразование
g = (g1, g2, . . . , gn): D → D
0
отображает область D ⊂ Rnв область D0⊂ Rn; имеет место разложение
D = D1∪ D2∪ . . . ∪ D
r
на r < ∞ пересекающихся множеств и разложение
D0= D
1
∪ D
0
∪ . . . ∪ D
2
0
r
0
на (возможно, пересекающиеся) множества; сужения
g|
D
: Dk→ D
k
0
k
взаимно однозначны. Пусть далее
(h
, h
1,k
есть обратное преобразование к g|
, . . . , h
2,k
, функции h
D
k
n,k
)
непрерывно диффе-
j,k
ренцируемы и якобианы
∂h
J =
j,k
∂y
j,l=1,2,...,n
l
6= 0, k = 1, 2, . . . , r.
Тогда плотность распределения pX(x1, x2, . . . , xn) 6= 0 величин X1,
X2, . . . , Xnи плотность распределения pY(y1, y2, . . . , yn) величин Y1,
Y2, . . . , Ynсвязаны соотношением
pY(y1, y2, . . . , yn) =
r
X
=
|Jk|pX(h
k=1
, y2, . . . , yn), . . . , h
1,k(y1
, y2, . . . , yn)).
n,k(y1
Метод функциональных преобразований часто применяется для
экономичного генерирования одномерных распределений. Рассмотрим
несколько случаев.
Моделирование экспоненциального распределения может произ-
водиться по следующему алгоритму. Пусть случайные величины U1,
U2, .. . , U
тервале (0, 1), U
независимы и имеют равномерное распределение в ин-
2n−1
0
1
, U
0
, .. . , U
2
0
— расположенные по возрастанию
n−1
62

величины U
величины
n+1
, U
n+2
, . . . , U
. Положим U
2n−1
0
= 0, U
0
0
= 1. Тогда
n
Xk= λ−1(U
0
k−1
0
− U
) ln(U1U2× . . . × Un), k = 1, 2, . . . , n,
k
независимы и имеют экспоненциальное распределение с параметром λ.
Для отыскания совместного распределения величин X1, X2, . . . ,
Xnнеобходимо заметить следующее. Вектор (U
0
, U
1
0
, . . . , U
2
0
n−1
) и
величина
V = −λ−1ln(U1U2× . . . × Un)
независимы, поскольку функционально зависят от разных независимых
наборов величин. Функция распределения величины V находится по
совместному распределению величин U1, U2, . . . , Unследующим образом. При x > 0
Z
Z
FV(x) = P({V < x}) =
−λ−1ln(u1u2×...×un)<x
···
du1du2. . . dun,
поскольку совместная плотность под интегралом равна 1. Вводя новые
−v
переменные по формулам uk= e
Z
Z
···
−ln(u1u2×...×un)<λx
du1du2. . . dun=
Z
=
···
v1>0, ..., vn>0
v1+...+vn<λx
Z
e
= e
k
, vk> 0, k = 1, 2, . . . , n, получаем
−(v1+v2+...+vn)
−λx
1 −λx −
dv1dv2. . . dvn=
2
(λx)
− . . . −
2!
n−1
(λx)
(n − 1)!
.
Таким образом, V имеет гамма-распределение с плотностью вида
n−1e−λx
pV(x) =
Далее отображение связывающее величины U
λnx
(n − 1)!
для x > 0.
, U
n+1
n+2
, . . . , U
величинами
V1= −U
0
, V2= U
1
0
2
− U
0
1
, . . . , V
n−1
= U
0
n−1
− U
0
n−2
63
2n−1
,
с

имеет ровно (n − 1)! обратных дифференцируемых отображений с якобианом 1. На основании приведенного выше утверждения, совместная
плотность распределения величин V1, V2, . . . , V
n−1
равна
p
V1,...,V
(x1, x2, . . . , x
n−1
) = (n − 1)!
n−1
при
x1> 0, x2> 0 , . . . , x
x1+ x2+ .. . + x
n−1
n−1
6 1.
> 0,
Наконец, имеют место равенства
V = X1+ X2+ .. . + Xn,
V1= X1(X1+ X2+ .. . + Xn)−1,
V2= (X1+ X2)(X1+ X2+ .. . + Xn)−1,
. . . ,
V
= (X1+ X2+ .. . + X
n−1
)(X1+ X2+ .. . + Xn)−1.
n−1
Несложно убедиться, что якобиан преобразования равен
(x1+ x2+ .. . + xx)
−(n−1)
.
Снова обращаясь к сформулированному выше утверждению, получаем
совместную плотность распределения вида
p
X1,X2,...,X
(x1, x2, . . . , xn) = λne
n
−λ(x1+x2+...+xn)
при x1> 0, x2> 0, . . . , xn> 0.
Этот алгоритм выгодно применять при значениях n = 2 или n = 3
и сочетать с векторными операциями генерирования величин U1, U2,
. . . , U
, если вычисление логарифма является времязатратной опе-
2n−1
рацией. Например, при n = 3 получаем следующий алгоритм:
Алгоритм XIV
Моделирование вектора из независимых экспоненциальных случайных
величин
Шаг 1. Получить значения U1, U2, . . . , U5.
Шаг 2. Если U4> U5, поменять местами значения U4и U5.
64

X
X
X
1
=
2
3
1
ln U1U2U3,
λ
−U
U4− U
1 −U
4
Y .
5
5
Шаг 3. Положить Y =
Как видно, получение трех значений величины X с экспоненциальным распределением требует лишь одного вызова функции логарифма. Окончательное решение о выгоде рассмотренного метода необходимо принимать после экспериментов на целевом компьютере.
Рассмотрим теперь некоторые методы моделирования нормаль-
ного распределения.
Важный метод основывается на одном любопытном свойстве вектора (X1, X2, . . . , Xn) из независимых нормальных случайных величин со средним 0 и дисперсией 1. Положим
2
1
+ X
2
+ .. . + X
2
2
χ
= X
n
2
.
n
Тогда вектор
(χ
−1
X1, χ
n
−1
X2, . . . , χ
n
−1
n
Xn)
равномерно распределен на n-мерной единичной сфере с центром в начале координат и не зависит от величины χn. Заметим, что величина
2
χ
имеет гамма-распределение с плотностью вида
n
(n/2)−1e−x/2
(x) =
x
n/2
2
Γ(n/2)
, x > 0, (3.5)
2
p
χ
n
известной также как плотность χ2-распределение («хи-квадрат») с n
степенями свободы. Справедливо обратное утверждение: если вектор
(X1, X2, . . . , Xn) такой, что (χ
−1
n
X1, χ
−1
X2, . . . , χ
n
−1
Xn) равно-
n
мерно распределен на n-мерной единичной сфере с центром в начале
координат и не зависит от величины χn, а величина χ
2
имеет распре-
n
деление с плотностью (3.5), то величины X1, X2, . . . , Xnнезависимы
и имеют нормальное распределение с параметрами 0, 1. На содержательном уровне это означает, что случайный вектор с независимыми
координатами, распределенными по нормальному закону с параметрами 0, 1, есть «случайное направление», вытянутое в χnраз. Поскольку
значение величины χ
2
может быть сгенерировано как
n
p
−2 ln(U1U2× . . . × Un),
65

то получаем следующий алгоритм.
Алгоритм XV
Моделирование вектора из нормальных величин
Шаг 1. Сгенерировать величины
γ1= 1 −2U1, γ2= 1 −2U2, . . . , γn= 1 −2Un,
где случайные величины U1, U2, .. . , Unнезависимы и имеют равномерное распределение в интервале (0, 1). Положить
d =qγ
1
+ γ
2
+ .. . + γ
2
2
.
n
2
Шаг 2. Если d > 1, вернуться к шагу 1.
Шаг 3. Положить
w1= γ1/d, w2= γ2/d, . . . , wn= γn/d.
Таким образом, величины w1, w2, . . . , wnзадают направляющие косинусы случайного направления (случайной точки единичной сферы).
Шаг 4. Положить
p
Xk= w
−2 ln(U1U2× . . . × Un), k = 1, 2, . . . , n.
k
Этот метод часто используется при n = 2. В этом случае формулы
принимают вид:
X1= (γ1/d)p−2 ln U1, X2= (γ2/d)p−2 ln U1.
Поскольку величины γ1, γ2и d связаны равенством
(γ1/d)2+ (γ1/d)2= 1,
для получения нормальных значений со средним µ и дисперсией σ
пользуются также формулами
X1= σp−2 ln(1 −U1) sin 2πU2+ µ,
X2= σp−2 ln(1 −U1) cos 2πU2+ µ.
66
2

В том, что величины X1, X2имеют требуемое распределение, можно
убедиться непосредственно. Функции
g1(x1, x2) = σp−2 ln(1 −x1) sin 2πx2+ µ,
g2(x1, x2) = σp−2 ln(1 −x1) cos 2πx2+ µ
взаимно однозначно отображают внутренность квадрата (0, 1)×(0, 1) ⊂
⊂ R2на R2. Обратное преобразование имеет якобиан
2
,
J =
1
2πσ
exp−
2
(y1− µ)2+ (y2− µ)
2
2σ
следовательно, случайные величины X1, X2имеют плотность распределения вида
2
,
p(x1, x2) =
1
2πσ
exp−
2
(x1− µ)2+ (x2− µ)
2
2σ
независимы и имеют нормальное распределение с параметрами µ, σ2.
Алгоритм легко переводится в векторную форму, если имеются векторные функции для вычисления синуса, косинуса, логарифма и квадратного корня.
Ускорение работы алгоритма может быть достигнуто за счет отказа от трудоемких операций вычисления логарифма и квадратного
корня. Введем функцию
p
g(u) = u
−1/2
−u−1ln(1 −u) .
Пусть выбрано число τ, 0 6 τ < 1. Сделаем замену переменного
v = (αu + β)/(γu + δ)
с такими значениями параметров α, β, γ, δ, при которых отрезок [0, τ]
отображается в отрезок [−1, 1], а особые точки функции g(u) удаляются вовне отрезка [−1, 1]. Теперь для u 6 τ применим полиномиальную
аппроксимацию функции h(v), а для u > τ будем использовать библиотечные функции вычисления квадратного корня и логарифма. Чтобы вернуться к функцииp−log(1 −u), теперь потребуется вычислить
−1/2
u
, где u — значение случайной величины с равномерным законом
распределения в интервале (0, 1). Вместо этого может оказаться более
экономичным вычислить величину
0
U1= max{U
1
, U
00
}2,
1
67

0
где U
00
, U
— независимые случайные величины с равномерным рас-
1
1
пределением в интервале (0, 1). Найдем распределение величины U1в
этом случае. Для 0 6 u 6 1 имеем
P({U1< u}) = P({max{U
00
, U
} <√u}) = P({U
1
1
0
<√u, U
1
00
<√u})
1
0
и, в силу независимости,
P({U
0
<√u, U
1
00
<√u}) = P({U
1
0
<√u})P({U
1
00
<√u}) =
1
=√u ·√u = u.
Следовательно, величина U1имеет равномерное распределение в интервале (0, 1) и
(U1)
1/2
= max{U
0
1
, U
00
}.
1
При одном частном наборе параметров получается следующий алгоритм.
Алгоритм XVI
Ускоренное моделирование вектора нормальных величин
Шаг 1. Сгенерировать значения независимых случайных вели-
0
чин U
00
, U
, U2с равномерным распределением в интервале (0, 1).
1
1
Шаг 2. Положить V = max{U
0
00
, U
} и U1= max{U
1
1
0
1
, U
00
}2.
1
Шаг 3. Если U16 8/9, то перейти к шагу 5.
Шаг 4. Вычислить величину r = σp−ln(1 −U1) с помощью
библиотеки математических функций и перейти к шагу 6.
Шаг 5. Положить v = (6U1− 4)/(4 − 3U1), вычислить h(v) и
положить r = σmh(v).
Шаг 6. Вычислить s = sin(2πU2− π), c = cos(2πU2− π).
Шаг 7. Вернуть значения X1= µ + cr√2 и X2µ + sr√2.
Векторная реализация этого алгоритма требует от используемого процессора наличия специальной операции. Требуется отобрать из
вектора значений величин U1на шаге 3 те, для которых выполняется условие U1> 8/9, и переместить их в отдельный вектор, а затем
поместить на их места в исходном векторе результат вычисления квадратного корня.
68

Говорят, что вектор (X1, X2, . . . , Xn) имеет n-мерное нормаль-
ное распределение с вектором средних
m = (m1, m2, . . . , mn)
и ковариационной матрицей
Σ = (σ
: k, l = 1, 2, . . . , n),
k,l
если его плотность распределения имеет вид
o
T
,
p(x1, x2, . . . , xn) = (2π det Σ)
−n/2
expn−
1
(x − m)Σ−1(x − m)
2
x = (x1, x2, . . . , xn).
Тогда параметры имеют следующий смысл: mk= M Xk— математическое ожидание величины Xk, σ
σ
= cov(Xk, Xl) = M(Xk− mk)(Xl− ml)
k,l
k,k
2
= σ
= D Xk— дисперсия Xk,
k
— ковариация величин Xkи Xl. Моделирование значений вектора X =
= (X1, X2, . . . , Xn) удобно производить в виде линейного преобразо-
вания
X = AY + m,
где матрица A — нижнетреугольная:
A =
a
a
. . . . . . . . . . . .
a
0 . . . 0
1,1
2,1a2,2
n,1an,2
. . . 0
. . . a
n,n
,
а вектор Y имеет независимые координаты, распределенные по нормальному закону с параметрами 0, 1. Матрица A определяется по ковариационной матрице Σ следующим образом. Поскольку
то a
= σ1. Далее
1,1
X1= a
1,1Y1
X2= a
cov(X1, X2) = σ
+ m1, cov(X1, X1) = σ
2,1Y1
+ a
, D X2= σ
2,1
2,2Y2
+ m2,
2
,
2
69
2
,
1

тогда
2
σ
a
2,1
2,1
=
, a
σ
1
2,2
=sσ
σ
2,1
2
−
2
.
2
σ
1
Методом математической индукции можно установить формулу
P
σ
k,l
a
k,l
q
=
l−1
−
2
σ
l
a
k,jaj,l
j=1
P
l−1
−
j=1
.
2
a
l,j
3.4. Моделирование случайных векторов с помощью
многомерных цепей Маркова
Рассмотренные в предыдущем разделе способы моделирования
случайного вектора позволяют точно воспроизводить искомое распределение вероятностей. В настоящем разделе мы рассмотрим метод генерирования случайного вектора с распределением, как угодно близким
к заданному. Как будет показано в следующем разделе, генерация значения случайного вектора часто возникает как частная задача в оценке некоторой числовой характеристики этого вектора, и в этом случае
излагаемый здесь метод также даст приближенное решение задачи с
заданной наперед точностью.
Пусть задано распределение вектора X = (X1, X2, . . . , Xn)
в виде n-мерной плотности распределения p(x1, x2, . . . , xn), если X
— непрерывный случайный вектор, либо в виде n-мерного дискретного
распределения вероятностей
p(x1, x2, . . . , xn) = P({X1= x1, X2= x2, . . . , Xn= xn}),
если X — дискретный случайный вектор. Метод цепи Маркова заключается в построении цепи Маркова X
распределение которой совпадает с распределением вектора X. Напомним, что последовательность {X
чайных векторов образует цепь Маркова, если n-мерная функция условного распределения вектора X
(0)
X
= x
условного распределения вектора X
(i)
ра X
. Для векторов X
(0)
, X
(1)
= x
(1)
, . . . , X
(i)
(i)
; i = 0, 1, . . .} вещественных слу-
(i+1)
при заданных значениях векторов
(i)
= x
(i+1)
, i = 0, 1, . . . с дискретным распределением
(0)
(1)
, X
, .. . , стационарное
(i)
совпадает с n-мерной функцией
при заданном значении векто-
70
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
