9. Вероятностные методы. Метод Монте

advertisement
9. Вероятностные методы.
Метод Монте-Карло
В отличие от традиционных численных методов решения задач,
заключающихся в разработке алгоритма построения решения, для
исследования некоторых классов задач оказывается более целесообразным
моделирование их сущности с использованием законов больших чисел
теории вероятностей. Оценки f1, f2, …, fn искомой величины f в этом
случае строят на основании статистической обработки материала, полученного
в результате многократных случайных испытаний. Основным требованием
при этом является сходимость по вероятности рассматриваемой случайной
величины к искомому решению задачи:
lim P f  f n     1.
n
(9.1)
Здесь P — вероятность, ε — сколь угодно малое положительное число.
В отличие от численных методов, описанных в предыдущих главах, в данном
случае вычислительный процесс является недетерминированным. Такой
подход к решению вычислительных задач получил общее название метод
Монте-Карло. При практической реализации данного подхода случайные
величины заменяют сериями, так называемых, псевдослучайных величин,
генерируемых соответствующими стандартными программами.
9.1. Вычисление определенного
интеграла
Пусть задана непрерывная случайная величина ξ с плотностью вероятности ρx ,
значения которой распределены на интервале (a, b).
Плотность вероятности ρx  обладает следующими свойствами:
1 ) ρx   0, 2)

b

a
 ρxdx   ρxdx  1.
(9.2)
Тогда математическое ожидание случайной величины ξ равно интегралу
b
M ξ    xρx dx
Для функции f ξ , аргументом которой является случайная величина ξ, т.е. для
случайной функции, математическое ожидание равно
(9.3)
b
M  f ξ    f x ρx dx
a
a
b
Отсюда следует, что любой интеграл вида  f x ρx dx, где функция ρx 
a
обладает свойствами (9.2), можно принять за математическое ожидание
некоторой случайной функции f ξ .
Но математическое ожидание случайной величины f ξ  можно приближенно
определить с помощью статистических оценок, т.е. на основе выборки ξ1 , ξ 2 , ..., ξ N 
объема N как среднее арифметическое значений  f ξ1 , f ξ 2 , ..., f ξ N . Поэтому
интеграл (9.3) можно вычислить приближенно по формуле
b
(9.4)
1 N






f
x
ρ
x
dx

f
ξ
 k
a
N k 1
Теоретическим основанием для такого перехода является центральная
предельная теорема теории вероятностей, которая в упрощенной
формулировке утверждает следующее:
Среднее арифметическое N испытаний случайной величины ξ
1 N
ξ N  ξk
N k 1
является случайной величиной с тем же математическим ожиданием M ξ N   M ξ 
1
и дисперсией, равной Dξ N   Dξ  , и при N   закон распределения
N
случайной величины ξ N стремится к нормальному закону.
Очевидно, что чем больше N, тем меньше дисперсия Dξ N   1 Dξ . Величину
N
погрешности формулы (9.4) можно оценить по вероятности. Например, при
больших N можно утверждать, что с вероятностью 0,997 ошибка не превосходит
величину 3σ  3  Dξ N  (правило «трех сигм» для нормально распределенной
случайной величины).
Можно считать, что погрешность формулы (9.4) есть величина порядка O 1 ,
 N
но для повышения точности нельзя применять правило Рунге-Ромберга.
Приведем другой способ статистической оценки для одномерного интеграла
b
 f xdx
a
Для этого вспомним его геометрический смысл. Предположим, что функция f x 
положительна на отрезке [a, b]. Тогда интеграл равен площади криволинейной
трапеции, ограниченной графиком функции f x , осью абсцисс и прямыми x=a
y
и x=b (Рис. 9.1).
fmax
f(x)
(x, y)
x
a
Рис 9.1
b
Рассмотрим две случайные величины ξ — равномерно распределенную на
отрезке [a, b] и η — равномерно распределенную на отрезке [0, fmax], где
f max  max f x .
xa ,b 
Вероятность попадания случайной точки (ξ, η) в криволинейную трапецию равна
отношению площади трапеции к площади прямоугольника x, y , a  x  b, 0  y  f max 
b
p
 f x dx
a
b  a  f max
(9.5)
Проведем серию из N испытаний и получим N случайных точек x, y ,
принадлежащих прямоугольной области a  x  b, 0  y  f max . Подсчитаем число
Nf точек, удовлетворяющих условию y  f x. Тогда вероятность попадания
случайной точки (ξ, η) в криволинейную трапецию приближенно равна
относительной частоте попадания в трапецию, т.е. p  N f и интеграл
N
приближенно вычисляется по формуле:
b
Nf
(9.6)




f
x
dx

b

a
f
.
max
a
N
Другой, более простой способ вычисления интеграла заключается в следующем:
Проведем серию из N испытаний случайной величины, равномерно распределенной на отрезке [a, b] и получим N случайных чисел xi, принадлежащих
отрезку [a, b]. Вычислим интеграл по формуле
b

b  a N
(9.7)
f xi .
a f xdx  N 
i 1
Отметим, что в (9.7) подынтегральная функция может принимать
положительные и отрицательные значения, тогда как формула (9.6) применима
только для неотрицательной функции .
В общем случае, когда пределы интегрирования могут быть бесконечными,
необходимо преобразовать интеграл к виду
1
(9.8)
f x dx

0
и применить формулу (9.7).
9.2. Вычисление кратных интегралов
Метод Монте-Карло для вычисления одномерных интегралов обычно не
применяется, так как для получения высокой точности более удобны
квадратурные формулы. Этот метод оказывается более эффективным при
вычислении кратных интегралов, когда кубатурные формулы для достижения
малой погрешности слишком громоздки и требуют большого объема
вычислений.
При использовании квадратурных или кубатурных формул, число операций
быстро возрастает с ростом размерности интеграла. Например, если для
вычисления одномерного интеграла методом трапеций с заданной точностью
необходимо вычислить сумму порядка N слагаемых, то для вычисления
двойного интеграла тем же методом необходимо сложить порядка N2
слагаемых, а для тройного интеграла число слагаемых составляет порядка N3.
Число испытаний N, требующихся для достижения заданной точности ε
1
приближенного значения, в методе Монте-Карло есть величина порядка O 2  и
ε 
не зависит от размерности интеграла.
Приведем критерий выбора между кубатурной формулой p-го порядка точности
и методом Монте-Карло для вычисления с точностью ε кратного интеграла
функции m переменных:
Если число измерений m < 2p, то выгодней использовать кубатурные или
квадратурные формулы, если m > 2p — лучше метод Монте-Карло.
Например, если p = 1, тройные интегралы выгоднее вычислять методом МонтеКарло, а одномерные — квадратурными формулами.
Если p = 2, то выгоднее вычислять методом Монте-Карло пятимерные
интегралы, а одномерные, двойные и тройные — квадратурными или
кубатурными формулами.
Рассмотрим конкретные формулы метода Монте-Карло для вычисления
кратных интегралов, получающиеся способом, который применялся для вывода
формулы (9.7).
Пусть требуется вычислить двойной интеграл
b d
(9.9)


f
x
,
y
dxdy

a c
Проведем серию из N испытаний случайной точки xi , yi , где xi равномерно
распределены на отрезке [a, b], а yi равномерно распределены на отрезке [c, d].
Вычислим интеграл (9.9) по формуле

b  a d  c  N
 f xi , yi .
 f x, y dxdy 
b d
N
a c
(9.10)
i 1
Для тройного интеграла аналогично получим формулу

b  a d  c q  p  N
f  xi , y i , z i 

   f x, y, z dxdy 
N
i 1
b d q
(9.11)
a c p
где xi равномерно распределены на отрезке [a, b], yi равномерно распределены
на отрезке [c, d], а zi равномерно распределены на отрезке [p, q]; N — число
испытаний.
Для m-кратного интеграла формула метода Монте-Карло имеет вид
b1 b2
bm


1
2
m
1
2
m
...
f
x
,
x
,...,
x
dx
dx
...
dx

 
a1 a2
am

b1  a1 b2  a2 ...bm  am 
N
(9.12)
 f x , x
N
i 1
1
i
2
i

,..., xim .
9.3. Решение систем линейных
уравнений
Рассмотрим применение метода Монте-Карло к решению системы линейных
уравнений:
n
aij x j  bi , i  1, ..., n

(9.13)
j 1
Пусть система (9.13) приведена к виду
n
(9.14)
x  α x  β , i  1, ..., n,
i

j 1
ij
j
i
где норма матрицы α  [α ij ] удовлетворяет условию α  1. Тогда система (9.14)
имеет единственное решение.
Приведем без доказательства схематическое описание метода Монте-Карло
для решения системы линейных уравнений (9.14).
Подберем такие множители vij, чтобы решения pij уравнений α ij  pij vij
удовлетворяли условиям:
1) pij  0, причем pij  0, если α ij  0;
n
2)
p
j 1
ij
 1, i  1, ..., n.
Положим
n
pi ,n1  1   pij , i  1, ..., n;
j 1
pn1, j  0, если j  n  1;
pn1,n1  1.
Будем трактовать число pij как вероятность перехода некоторой частицы из
состояния Si в состояние Sj. Всего состояний n+1:
S1, S2, …, Sn +1,
причем граничное состояние Sn +1 = Г соответствует остановке частицы, так как
p n 1, j  0 , т.е. частица не может выйти из состояния Sn +1.
Матрица с элементами называется матрицей перехода состояний {Si}:



  .



p1,1 p1,2
p2 ,1 p2 ,2
. . . . . .
pn,1 pn,2
0
0
...
...
. .
...
...
p1,n p1,n 1 
p2 ,n p2 ,n 1 
. . . . . . . .

pn,n pn,n 1 
0
1 
(9.15)
Назовем траекторией Ti совокупность состояний, через которые проходит
блуждающая частица, начиная с состояния Si и заканчивая граничным
состоянием Г. Промежуточные состояния частицы обозначим Si1 , Si2 ,..., Sim .


Ti  Si , Si1 , Si2 ,..., Sim , Sim1  
Поставим в соответствие траектории Ti случайное число Xi:
X i  β i  vi ,i1 β i1  vi ,i1 vi1 ,i2 β i2  ...  vi ,i1 vi1 ,i2 ...vim1 ,im β im
(9.16)
(9.17)
где βi , βi , βi , ..., βi — свободные члены системы (9.14) с индексами,
совпадающими с индексами состояний, образующих траекторию (9.16).
Теорема. Математические ожидания случайных величин (9.17) равны корням
системы (9.14): M  X i   xi , i  1,..., n .
Сформулируем алгоритм решения системы линейных уравнений (9.13)
методом Монте-Карло.
1. Привести систему (9.13) к виду (9.14):
n
(9.18)
xi   αij x j  βi , i  1, ..., n; α  1.
1
2
m
j 1
2. Подобрать такие числа vij, чтобы решения pij уравнений удовлетворяли
условиям:
n
1) pij  0, pij  0, если α ij  0; 2)  pij  1, i  1, ..., n.
(9.19)
j 1
Вычислить n+1-й столбец и n+1-ю строку матрицы перехода:
n
pi ,n1  1   pij , i  1, ..., n;
(9.20)
j 1
pn1, j  0, если j  n  1;
pn1,n1  1.
3. Выполнить для каждого i  1, ..., n :
3.0. Присвоить значение xi = 0;
3.1. Для каждого k  1, ..., N , (где N число испытаний случайной величины Xi),
выполнить статистические испытания по алгоритму:
3.1.0. Присвоить m = 0; im = i; v = 1; xi = xi + βi
3.1.1. Присвоим переменной очередное значение: m = m + 1;
3.1.2. Возьмем случайное число ξ из интервала (0; 1), и выберем значение im по
следующему правилу:
3.1.3. Если j < n + 1, перейти к 3.1.1.
3.1.4. Для каждого l  0, 1, ..., m  2 вычислить
v  v  v , xi  xi  v  il 1 ;
3.2. Вычислить xi = xi / N.
il il 1
Download