From Werner KRAUTH
Revision as of 10:20, 8 September 2022;
view current revision←Older revision |
Newer revision→
import random
n = 100
NIter = 1000000
AlphaSim = [0, 0.25, 0.5, 0.75, 1.0]
Pi = {}
for Alpha in AlphaSim:
Pi[(0, Alpha)] = 0.0
Pi[(n + 1, Alpha)] = 0.0
for x in range(1, n + 1):
Pi[(x, Alpha)] = (abs( (n + 1) / 2.0 - x)) ** Alpha
x = 1
ZProd = n
for AlphaIndex in range(len(AlphaSim) - 1):
Alpha = AlphaSim[AlphaIndex]
AlphaPrime = AlphaSim[AlphaIndex + 1]
ZRatio = 0
for iter in range(NIter):
ZRatio += Pi[(x, AlphaPrime)] / Pi[(x, Alpha)]
Sigma = random.choice([1, -1])
if random.uniform(0.0, 1.0) < Pi[(x + Sigma, Alpha)] / Pi[(x, Alpha)]:
x = x + Sigma
ZRatio /= NIter
print(ZRatio)
ZProd *= ZRatio
print(1.0 / ZProd, 4.0 / n ** 2)