Bài 3:
Mô phỏng Monte Carlo
Under construction.
Giới thiệu
●
●
●
●
●
Monte Carlo (MC) là phương pháp dùng số ngẫu nhiên
để lấy mẫu (sampling) trong một tập hợp
Thuật ngữ “Monte Carlo” được sử dụng lần đầu bởi
Metropolis (Los Alamos, 1947)
Tính tích phân bằng phương pháp ngẫu nhiên. Tính số
Pi bằng phương pháp ngẫu nhiên (1901).
Phương pháp Metropolis (1953): cho phép lấy mẫu theo
một tập hợp thống kê bất kỳ cho trước.
Hiện nay MC được coi là phương pháp hữu hiệu nhất để
nghiên cứu các hệ phức hợp
Tính số bằng Monte Carlo
●
Gieo ngẫu nhiên với phân
bố đều
4 N hit
≈
N trails
−1/2
sai số ~ N trails
Tính tích phân bằng Monte Carlo
●
Phương pháp tổng quát tính tích phân bằng cách lấy
trung bình từ các lần thử
f ( x)
x2
F =∫ f x dx
x1
x2
F =∫
x1
●
f x
x dx
x
F
x1
chọn là số ngẫu nhiên trong khoảng (x1,x2) với
phân bố (x) bất kỳ cho trước, ta có:
〈 〉
f
F=
trials
x2
●
Với (x) là phân bố đều:
1
x=
x 2−x 1
x 1≤ x≤x 2
N trails
x 2− x 1
F=
f i
∑
N trials i=1
●
Tuy nhiên, trong một số trường hợp cách lấy mẫu theo
phân bố đều không hiệu quả. Ví dụ đối với tích phân cấu
hình trong tập hợp chính tắc:
Z NVT =∫ d Γ e
−E ( Γ)/k B T
Lấy mẫu quan trọng
●
●
Là cách lấy mẫu theo một phân bố (khác phân bố đều)
sao cho tập trung vào miền có đóng góp đáng kể trong
tích phân
Trong tập hợp chính tắc:
〈 A〉 NVT =∫ d A NVT
−1
ρ NVT (Γ)=Z NVT e
●
− E (Γ)/ k B T
Nếu ta lấy mẫu theo phân bố = NVT thì:
〈 A〉 NVT =〈 A〉trails
“Instead of choosing configurations randomly, then weighting
them with exp(−E/kT), we choose configurations with a
probability exp(−E/kT) and weight them evenly.”
— Metropolis et al.
Metropolis, N.; Rosenbluth, A.W.; Rosenbluth, M.N.; Teller, A.H.; Teller, E. (1953).
"Equations of State Calculations by Fast Computing Machines". Journal of Chemical
Physics 21 (6): 1087–1092.
Chuỗi Markov
●
Phương pháp lấy mẫu Monte Carlo cho ta một chuỗi các
trạng thái vi mô ngẫu nhiên:
1, 2, , n−1 , n ,
●
Chuỗi Markov: xác suất lựa chọn một trạng thái chỉ phụ
thuộc vào trạng thái ngay trước nó (stochastic process
with no memory)
●
Xác suất chuyển trạng thái
●
Bảo toàn xác suất chuyển:
k β α =1
∑
β
α→β : k β α
k α α =1− ∑ k β α
β≠α
Phương trình chủ
●
Chuỗi Markov tuân theo phương trình chủ (Master
equation):
d pα
= ∑ (k αβ p β−k βα p α )
dt β≠α
p
kβα
●
là xác suất tìm thấy hệ ở trạng thái
là xác suất chuyển trạng thái từ sang
Phương trình chủ là dạng rời rạc của phương trình
Fokker-Planck (trong lý thuyết các quá trình nhiễu loạn).
Điều kiện cân bằng chi tiết
●
Khi t tiến tới vô cùng, để tồn tại trạng thái cân bằng:
t ∞ : p = p
eq
d p eq
=0
dt
●
Điều này xảy ra khi có điều kiện cân bằng chi tiết:
eq
eq
k αβ p β =k β α p α
Detailed balance
condition
●
Thông thường trong Monte Carlo
k β α =k
trong đó
●
k
k
a
βα
s
βα
a
βα
k
s
βα
là xác suất chuyển tiên nghiệm (a priori)
là xác suất chấp nhận chuyển đổi
Monte Carlo yêu cầu xác suất chuyển tiên nghiệm phải
bằng nhau (không ưu tiên bất cứ chiều chuyển nào):
a
a
k β α =k α β
(tương tự như tiên đề về xác suất tiên nghiệm trong Vật
lý thống kê: các trạng thái vi mô có xác suất tiên nghiệm
bằng nhau)
Phương pháp Metropolis
●
Cho phép chọn xác suất chuyển trạng thái sao cho điều
kiện cân bằng chi tiết được thỏa mãn:
●
eq
nếu p ≥ p
eq
s
βα
k =1
●
eq
eq
p
p
nếu
eq
pβ
s
k β α = eq
pα
p
k =
p
s
αβ
s
eq
α
eq
β
k αβ =1
●
Trường hợp tập hợp chính tắc, ta có phân bố Boltzmann:
eq
p =
suy ra
Nếu
Nếu
−E /k B T
e
Z NVT
p eq
E ≤E
E E
p
eq
eq
p =
=e
e
Z NVT
− E − E / k B T
s
βα
k =1
s
βα
−E / k B T
s
αβ
k =e
−( E β−E α)/ k B T
k =e
−( E α −E β)/ k B T
s
k αβ =1
●
Thuật toán Metropolis:
Giả sử năng lượng trạng thái hiện tại là E, năng lượng trạng
thái mới là E'
●
●
nếu E ' ≤ E : chấp nhận trạng thái mới
nếu E ' > E : chấp nhận với xác suất
–
●
●
gieo một số ngẫu nhiên trong khoảng [0,1)
nếu ξ< k : chấp nhận trạng thái mới.
nếu ξ⩾k : không chấp nhận trạng mới.
1
không chấp nhận
luôn
chấp
nhận
ξ
chấp nhận
0
k =e
−( E ' −E )/ k B T
e
ΔE
−Δ E / k B T
Phương pháp lấy mẫu Barker
●
●
Metropolis không phải là phương pháp duy nhất đảm
bảo điều kiện cân bằng chi tiết
Phương pháp lấy mẫu Barker (1965):
eq
s
k β α=
pβ
eq
α
eq
β
(p +p )
Thực hành
●
Dùng phương pháp Monte Carlo, tính tích
phân:
π
A=∫ sin( x)dx
0
●
Dùng phương pháp Metropolis tạo tập hợp số
ngẫu nhiên theo phân bố:
1
p( x)= sin ( x)
2
●
x∈[0, π]
Làm tương tự sử dụng phương pháp lấy mẫu
Barker.
Bài tập về nhà
●
Viết chương trình mô phỏng Monte Carlo cho hệ khí
nằm trong trọng trường
−
p( z)∼e
mgz
kT
Xét hộp khí kích thước LxLxL.
Chọn L=100, m=1, g=1, k=1.
Tạo các trạng thái vi mô cho N hạt:
● Phân bố tọa độ:
p(z) ~ exp(-mgz/kT)
● Phân bố xung lượng:
Maxwell-Boltzmann
z