Top to random eigenvalues.py
From Werner KRAUTH
(Difference between revisions)
Revision as of 13:18, 6 June 2024 Werner (Talk | contribs) ← Previous diff |
Revision as of 15:07, 6 June 2024 Werner (Talk | contribs) Next diff → |
||
Line 1: | Line 1: | ||
+ | ==Context== | ||
+ | This page is part of my [[BegRohu_Lectures_2024|2024 Beg Rohu Lectures]] on "The second Markov chain revolution" at the [https://www.ipht.fr/Meetings/BegRohu2024/index.html Summer School] "Concepts and Methods of Statistical Physics" (3 - 15 June 2024). | ||
+ | |||
+ | ==Python program== | ||
+ | |||
import numpy as np | import numpy as np | ||
import itertools | import itertools |
Revision as of 15:07, 6 June 2024
Context
This page is part of my 2024 Beg Rohu Lectures on "The second Markov chain revolution" at the Summer School "Concepts and Methods of Statistical Physics" (3 - 15 June 2024).
Python program
import numpy as np import itertools import scipy.linalg as la def factorial(n): return 1 if n == 0 else (0 if n == 0 else factorial(n - 1) * n) for N in [2, 3, 4, 5, 6, 7]: FacN = factorial(N) ConfCopy = [0] * N print(N, 'N', FacN) # # Setup of transition matrix # P = np.zeros((FacN, FacN)) Conf = [k for k in range(N)] ConfList = list(itertools.permutations(Conf)) for Conf in ConfList: i = ConfList.index(tuple(Conf)) ConfCopy[:] = Conf a = ConfCopy.pop(0) for k in range(N): TargetConf = ConfCopy[0:k] + [a] + ConfCopy[k:N - 1] j = ConfList.index(tuple(TargetConf)) P[i][j] = 1.0 / float(N) eigvals, eigvecsl, eigvecsr = la.eig(P, left=True) eigvals.sort() stats = [0] * (N+1) for a in eigvals: index = int(N * a.real + 0.5) stats[index] += 1 print(stats)