File: qmc_plot_mc_qmc.py

package info (click to toggle)
scipy 1.17.1-1exp2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 237,744 kB
  • sloc: cpp: 529,262; python: 357,592; ansic: 215,620; javascript: 89,566; fortran: 19,308; cs: 3,095; f90: 1,159; sh: 860; makefile: 521; pascal: 284; lisp: 218; xml: 56; perl: 46
file content (33 lines) | stat: -rw-r--r-- 675 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
"""MC vs QMC in terms of space filling."""
from scipy.stats import qmc
import numpy as np

import matplotlib.pyplot as plt


rng = np.random.default_rng()

n_sample = 256
dim = 2

sample = {}

# MC
sample['MC'] = rng.random((n_sample, dim))

# Sobol'
engine = qmc.Sobol(d=dim, seed=rng)
sample["Sobol'"] = engine.random(n_sample)

fig, axs = plt.subplots(1, 2, figsize=(8, 4))

for i, kind in enumerate(sample):
    axs[i].scatter(sample[kind][:, 0], sample[kind][:, 1])

    axs[i].set_aspect('equal')
    axs[i].set_xlabel(r'$x_1$')
    axs[i].set_ylabel(r'$x_2$')
    axs[i].set_title(f'{kind}—$C^2 = ${qmc.discrepancy(sample[kind]):.2}')

plt.tight_layout()
plt.show()