ФИЗИКА Ю.Н. Прошин кафедра т еорет ической физики Казанского федерального университ ет а 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 Генератор случайных чисел Насколько случайно случайное? Простой линейный генератор xn1 ( 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 Генератор случайных чисел Насколько случайно случайное? Простой линейный генератор xn1 ( axn b) mod m x0 задается при инициализации m - модуль, a – множитель, b – инкремент суть целочисленные константы Например: a = 7141, b = 54733, m = 259200 Выбор констант определяет периодичность в повторении “случайных” чисел. Проверка парных корреляций • Строим на плоскости множество точек Xi(xn, xn+1). • Точки равномерно заполняют пространство – “хороший” генератор. • Точки ложатся в хаотическом порядке на несколько прямых – “плохой” генератор. Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3 # 21 Генератор случайных чисел Насколько случайно случайное? 35 Простой линейный генератор xn1 ( 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 Генератор случайных чисел Насколько случайно случайное? Простой линейный генератор xn1 ( 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 Генератор случайных чисел Насколько случайно случайное? Простой линейный генератор xn1 ( 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 Генератор случайных чисел Насколько случайно случайное? Простой линейный генератор xn1 ( 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 Генератор случайных чисел Насколько случайно случайное? Простой линейный генератор xn1 ( 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 Генератор случайных чисел Насколько случайно случайное? Простой линейный генератор xn1 ( axn b) mod m Ю.Н. Прошин и С.К. Сайкин ВычФиз Лекция 3 # 27 Генератор случайных чисел Насколько случайно случайное? Простой линейный генератор xn1 ( 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