ФИЗИКА Ю.Н. Прошин кафедра т еорет ической физики Казанского федерального университ ет а

advertisement
ФИЗИКА
Ю.Н. Прошин
кафедра т еорет ической физики
Казанского федерального университ ет а
yurii.proshin@kpfu.ru
2004-2013, Казань
1804-2004
Kazan
University
Методы Монте Карло
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
#2
Монте Карло



Одна из пяти областей
Монако
Основана в 1866 году
принцем Чарльзом III
Всемирно известные
казино, роскошные отели,
пляжи
The Monte Carlo Grand Hotel
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
#3
Монте Карло

Всемирно
известные
казино,
роскошные
отели,
пляжи
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
#4
The casino at night.
David Tomlinson - Lonely Planet Images
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
#5
Port de Monaco and Monte Carlo.
Manfred Gottschalk - Lonely Planet Images
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
#6
Monte Carlo,Monaco-where the
rich and famous people live
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
#7
Monte Carlo,Monaco-where the rich and famous people live
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
#8
Методы Монте Карло



Монте Карло – это множество статистических
методов, используемых для решения
физических и математических задач.
В этих методах для моделирования
используются последовательности случайных
чисел.
Методы Монте Карло наиболее удобны для
моделирования случайных и вероятностных
процессов.
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
#9
Монте Карло Методы
Рождение





Los Alamos National Laboratory
Robert R. Wilson, Monte Carlo Study of Shower
Production, Phys. Rev. 86, 261 (1952)
C. L. Longmire and M. N. Rosenbluth, Diffusion of
Charged Particles across a Magnetic Field, Phys.
Rev. 103, 507 (1956)
N. Metropolis et al., Monte Carlo Calculations on
Intranuclear Cascades, Phys. Rev. 110, 185 (1958)
Metropolis, Rosenbluth, Teller
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 10
Пример 1. Площадь пруда
(интегрирование)
Площадь пруда S
Интегрирование I
y
H
H
f (x3)
f (x1)
a
b
S0 = (b – a)*H
S = S0*nпопаданий/nполное
a
f (x2)
f(x)
f (x4)
x1 x3
x4 x2
b
x
Генерируем случайным образом n пар т очек
(x1,y1), (x2,y2),... (xN,yN), на инт ервале [a,b]
ns
,
n
ns - число точек i, для которых
F (a, b)  S0
(1)
yi  f ( xi )
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 11
Пример 2. Расчет числа




Set Nin=0
Do N times
—Calculate 3 random numbers, r1, r2, r3
—Let x=r1 [0,1]
—Let y=r2 [0,1]
—Use r3 to choose quadrant (change signs of
x and y), int [1,2,3,4]
—If x2+y2 ≤ 1 set Nin = Nin + 1
Estimate for p =  = 4Nin/N
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 12
Пример 2. Расчет числа 
N=2
(x1,y1)
N = 103
(x2,y2)
N = 105
N = 104
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 13
Пример 3. Интегрирование
Метод прямоугольников
y
f(x)
a
x
b
x1 x2... xN – задаются как xi=x1+(i-1)Δx
b
N
F ( a, b)   f ( x )dx   f ( xi ) xi (2)
a
i 1
Метод Монте Карло (II)
y
f(x1) f(x2)... f(xN)
a
f(x)
b
x
x1 x2... xN – выбираются случайным образом
на инт ервале [a,b]
1
F ( a, b )  ( b  a )
N
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
N
 f (x )
i 1
i
(3)
# 14
Пример 3. Интегрирование
Многомерная функция f(x,y,z,a,b,c…)
z
f(x,y)
Интегрирование методом прямоугольников,
трапеций, Симпсона,... усложняется.
На каждом шаге надо пересчитывать все
y
координаты.
x
Метод Монте Карло:
1
F (a, b)  (  x   x )(  y   y )(  z   z )...
N
N
 f ( x , y , z ,...)
i 1
i
i
i
Примечание: число точек N должно быть достаточно большим.
большим
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 15
Пример 4. Случайное блуждание
y
x
Примечание: можно усложнить
проблему, задав траекторию без
самопересечений, возвратов, и
т.д.
do sample = 1 to N
begin
x = 0; y = 0;
do step = 1 to n
begin
ir = 4*rand( );
case ir
0 : x = x + 1.0;
1 : y = y + 1.0;
2 : x = x - 1.0;
3 : y = y - 1.0;
end
end; {accumulate results} end
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 16
Пример 4. Случайное блуждание
Theory: D = Sqrt (N)
Simulation
40
Origin
Попытка раз
Distance (D)
30
20
10
0
0
50
100
150
200
250
300
350
400
Ю.Н. Прошин и С.К. Сайкин
ВычФиз
Steps
(N) Лекция 3
450
500
# 17
Пример 4. Случайное блуждание
Theory: D = Sqrt (N)
Simulation
40
Origin
Попытка два
Distance (D)
30
20
10
0
0
50
100
150
200
250
300
350
400
Ю.Н. Прошин и С.К. Сайкин
ВычФиз
Steps
(N) Лекция 3
450
500
# 18
Пример 4. Случайное блуждание
Theory: D = Sqrt (N)
Simulation
40
Origin
Попытка три
Distance (D)
30
20
10
0
0
50
100
150
200
250
300
350
400
Ю.Н. Прошин и С.К. Сайкин
ВычФиз
Steps
(N) Лекция 3
450
500
# 19
Генератор случайных чисел
Насколько случайно случайное?
Простой линейный генератор
xn1  ( axn  b) mod m
x0 задается при инициализации
m - модуль, a – множитель,
b – инкремент суть целочисленные
константы
Например:
ax0= =7141,
= 54733,
m=
= 32
259200
1, a =b 3,
b = 4, m
Выбор
1, 7,констант
25, 15, определяет
17, 23, 9, 31, 1, 7, 25, …
периодичность
в повторении
Период равен
8 !?
“случайных” чисел.
{Xn+1/m} от 0 до 1
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 20
Генератор случайных чисел
Насколько случайно случайное?
Простой линейный генератор
xn1  ( axn  b) mod m
x0 задается при инициализации
m - модуль, a – множитель,
b – инкремент суть целочисленные
константы
Например:
a = 7141, b = 54733, m = 259200
Выбор констант определяет
периодичность в повторении
“случайных” чисел.
Проверка парных корреляций
• Строим
на плоскости
множество точек Xi(xn, xn+1).
•
Точки равномерно заполняют
пространство – “хороший”
генератор.
•
Точки ложатся в хаотическом
порядке на несколько прямых –
“плохой” генератор.
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 21
Генератор случайных чисел
Насколько случайно случайное?
35
Простой линейный генератор
xn1  ( axn  b) mod m
8
30
3
25
6
20
x0 задается при инициализации
15
m - модуль, a – множитель,
10
b – инкремент суть целочисленные
константы
5
Например:
1
0
ax0= =7141,
= 54733,
m=
= 32
259200
1, a =b 3,
b = 4, m
0
Выбор
1, 7,констант
25, 15, определяет
17, 23, 9, 31, 1, 7, 25, …
периодичность
в повторении
Период равен
8 !?
“случайных” чисел.
{Xn+1/m} от 0 до 1
5
4
7
2
1
9
5
7
10
15
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
20
25
30
35
# 22
Генератор случайных чисел
Насколько случайно случайное?
Простой линейный генератор
xn1  ( axn  b) mod m
x0 задается при инициализации
m - модуль, a – множитель,
b – инкремент суть целочисленные
константы
Например:
a = 7141, b = 54733, m = 259200
Выбор констант определяет
периодичность в повторении
“случайных” чисел.
Проверка парных корреляций
N=100
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.1
0.2
0.3
0.4
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
0.5
0.6
0.7
0.8
0.9
1
# 23
Генератор случайных чисел
Насколько случайно случайное?
Простой линейный генератор
xn1  ( axn  b) mod m
x0 задается при инициализации
m - модуль, a – множитель,
b – инкремент суть целочисленные
константы
Например:
a = 7141, b = 54733, m = 259200
Выбор констант определяет
периодичность в повторении
“случайных” чисел.
Проверка парных корреляций
N=1000
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.1
0.2
0.3
0.4
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
0.5
0.6
0.7
0.8
0.9
1
# 24
Генератор случайных чисел
Насколько случайно случайное?
Простой линейный генератор
xn1  ( axn  b) mod m
x0 задается при инициализации
m - модуль, a – множитель,
b – инкремент суть целочисленные
константы
Например:
a = 7141, b = 54733, m = 259200
Выбор констант определяет
периодичность в повторении
“случайных” чисел.
Проверка парных корреляций
N=10000
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.1
0.2
0.3
0.4
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
0.5
0.6
0.7
0.8
0.9
1
# 25
Генератор случайных чисел
Насколько случайно случайное?
Простой линейный генератор
xn1  ( axn  b) mod m
x0 задается при инициализации
m - модуль, a – множитель,
b – инкремент суть целочисленные
константы
Например:
a = 7141, b = 54733, m = 259200
Выбор констант определяет
периодичность в повторении
“случайных” чисел.
Проверка парных корреляций
N=50000
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.1
0.2
0.3
0.4
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
0.5
0.6
0.7
0.8
0.9
1
# 26
Генератор случайных чисел
Насколько случайно случайное?
Простой линейный генератор
xn1  ( axn  b) mod m
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 27
Генератор случайных чисел
Насколько случайно случайное?
Простой линейный генератор
xn1  ( axn  b) mod m
1
0.9
0.8
0.7
a = 899, b = 0, m = 32768, x0=12
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.1
0.2
0.3
0.4
0.5
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
0.6
0.7
0.8
0.9
1
# 28
Генератор случайных чисел
Как улучшить?



Перемешивание порядка выдачи чисел. Основной
генератор заполняет буфер случайными числами.
Дополнительный генератор выбирает числа из
буфера.
Два основных генератора создают случайные числа
N = n1 + n2/z или N = |n1 - n2|. Можно тоже
использовать буфер и дополнительный генератор.
Можно создать другой генератор. Существует
множество генераторов, например, “Xorshift”,“Lagged
Fibonacci”, “Multiply-With-Carry”…
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 29
Генератор случайных чисел
Генерация случайных чисел
с заданным распределением

Нужно генерировать случайные числа с плотностью
вероятности f(x) (Det:=>f(x) dx в инт ервале от x до
x + dx )
и (интегральной) функцией распределения
x
F ( x) 
 f ( x)dx

с нормировкой F(∞) = 1. (Det:=> вероят ност ь
выпадения сл. числа <= x)
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 30
Генерация случайных чисел с
заданным распределением





Inverse transformation method
(метод обратного преобразования)
Генерируется равномерное распределение xi на
интервале [0,1].
Решается обратная задача yi = F -1(xi).
Величина yi распределена с плотностью вероятности
f(x).
Пример: Генерация частиц с энергиями согласно
распределению Больцмана f(E) ~ e-E/kT.
Энергия i-й частицы запишется как Ei = -kT ln(r),
где r - случайное число на интервале [0,1].
Во многих случаях не так просто представить F -1(xi).
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 31
Генерация случайных чисел с
заданным распределением
Rejection method (метод отбора- отказа)
• Выбираем
промежуточную
функцию для сравнения, h(x),
которая “перекрывает” искомую
функцию f(x) . В данном
примере h(x) это прямоугольная
функция.
•
Равномерно заполняем
точками область под h(x).
•
Из всех точек выбираем
только те, которые находятся
под кривой f(x) .
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 32
To be continued
Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3
# 34
Download