Advertisement
6E697465737472796B72

inferno.py

Feb 23rd, 2025
37
0
6 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.94 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import numba
  4.  
  5. @numba.njit
  6. def f(a_vals, b_vals, pat, itr, tran):
  7.     N = a_vals.shape[0]
  8.     M = b_vals.shape[0]
  9.     out = np.empty((N, M))
  10.     plen = len(pat)
  11.     for i in range(N):
  12.         for j in range(M):
  13.             a = a_vals[i]
  14.             b = b_vals[j]
  15.             x = 0.5
  16.             L = 0.0
  17.             for k in range(tran):
  18.                 r = a if pat[k % plen] == 'A' else b
  19.                 x = r * x * (1 - x)
  20.             for k in range(itr):
  21.                 r = a if pat[k % plen] == 'A' else b
  22.                 x = r * x * (1 - x)
  23.                 L += np.log(abs(r * (1 - 2 * x)))
  24.             out[i, j] = L / itr
  25.     return out
  26.  
  27. N = 800
  28. a_vals = np.linspace(2.5, 4.0, N)
  29. b_vals = np.linspace(2.5, 4.0, N)
  30. pat = "ABBAAB"
  31. Z = f(a_vals, b_vals, pat, 200, 100)
  32. plt.imshow(Z.T, extent=[2.5, 4.0, 2.5, 4.0], cmap="inferno", origin="lower")
  33. plt.axis("off")
  34. plt.show()
  35.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement