34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
from quantum_states import sample_and_calculate
|
|
from tqdm import tqdm
|
|
|
|
# Define range of dimensions to test
|
|
fixed_dim = 64
|
|
dimensions = np.arange(2, 64, 2) # Test dimensions from 2 to 50 in steps of 2
|
|
expected_entropies = []
|
|
theoretical_entropies = []
|
|
predicted_entropies = []
|
|
|
|
# Calculate entropies for each dimension
|
|
for dim in tqdm(dimensions, desc="Calculating entropies"):
|
|
# For each dimension, we'll keep one subsystem fixed at dim=2
|
|
# and vary the other dimension
|
|
entropies = sample_and_calculate(dim, fixed_dim, n_samples=1000)
|
|
expected_entropies.append(np.mean(entropies))
|
|
theoretical_entropies.append(np.log2(min(dim, fixed_dim)))
|
|
beta = min(dim, fixed_dim)/(2*np.log(2)*max(dim, fixed_dim))
|
|
predicted_entropies.append(np.log2(min(dim, fixed_dim)) - beta)
|
|
|
|
# Create the plot
|
|
plt.figure(figsize=(10, 6))
|
|
plt.plot(dimensions, expected_entropies, 'b-', label='Expected Entropy')
|
|
plt.plot(dimensions, theoretical_entropies, 'r--', label='Theoretical Entropy')
|
|
plt.plot(dimensions, predicted_entropies, 'g--', label='Predicted Entropy')
|
|
plt.xlabel('Dimension of Subsystem B')
|
|
plt.ylabel('von Neumann Entropy (bits)')
|
|
plt.title(f'von Neumann Entropy vs. System Dimension, with Dimension of Subsystem A = {fixed_dim}')
|
|
plt.legend()
|
|
plt.grid(True)
|
|
plt.show()
|