def g_0n(D, Num_max, NFock): """ returns a D-squeezed 0-ancilla """ r = np.log(1 / D) psi0 = qt.squeeze(NFock, r) * qt.basis(NFock, 0) psi = qt.Qobj() for n in np.arange(-Num_max, Num_max + 1): psi += np.exp(-2 * np.pi * D**2 * n**2) * qt.displace( NFock, n * np.sqrt(2 * np.pi)) * psi0 return psi.unit()
def test_squeeze(): "Squeezing operator" sq = squeeze(4, 0.1 + 0.1j) sqmatrix = np.array([[0.99500417 + 0.j, 0.00000000 + 0.j, 0.07059289 - 0.07059289j, 0.00000000 + 0.j], [0.00000000 + 0.j, 0.98503746 + 0.j, 0.00000000 + 0.j, 0.12186303 - 0.12186303j], [-0.07059289 - 0.07059289j, 0.00000000 + 0.j, 0.99500417 + 0.j, 0.00000000 + 0.j], [0.00000000 + 0.j, -0.12186303 - 0.12186303j, 0.00000000 + 0.j, 0.98503746 + 0.j]]) assert_equal(np.allclose(sq.full(), sqmatrix), True)
def __init__(self, N, r, alpha, fockdim): zero = qt.Qobj() one = qt.Qobj() for m in range(2 * N): phi = m * np.pi / N D = qt.displace(fockdim, alpha * np.exp(1j * phi)) S = qt.squeeze(fockdim, r * np.exp(2j * (phi - np.pi / 2))) blade = D * S * qt.basis(fockdim, 0) zero += blade one += (-1)**m * blade zero = zero / zero.norm() one = one / one.norm() self._alpha = alpha self._r = r RotationalCode.__init__(self, zero=zero, one=one, N=N) self._name = 'cat'
def test_squeeze(): sq = qutip.squeeze(4, 0.1 + 0.1j) sqmatrix = np.array([[ 0.99500417 + 0.j, 0.00000000 + 0.j, 0.07059289 - 0.07059289j, 0.00000000 + 0.j ], [ 0.00000000 + 0.j, 0.98503746 + 0.j, 0.00000000 + 0.j, 0.12186303 - 0.12186303j ], [ -0.07059289 - 0.07059289j, 0.00000000 + 0.j, 0.99500417 + 0.j, 0.00000000 + 0.j ], [ 0.00000000 + 0.j, -0.12186303 - 0.12186303j, 0.00000000 + 0.j, 0.98503746 + 0.j ]]) np.testing.assert_allclose(sq.full(), sqmatrix, atol=1e-8)
def test_squeeze_type(): "Operator CSR Type: squeeze" op = squeeze(5, 0.1j) assert_equal(isspmatrix_csr(op.data), True)
env_kwargs = { 'control_circuit' : 'ECD_control', 'init' : 'vac', 'T' : 8, 'N' : 50} # Params for reward function if 1: # Fock target_state = qt.tensor(qt.basis(2,0), qt.basis(50,4)) if 0: # squeezed N = 70 db_val = 8 z = db_val / (20 * np.log10(np.e)) target_state = qt.tensor(qt.basis(2,0), qt.squeeze(N,z)*qt.basis(N,0)) if 0: # binomial N = 60 pz = (qt.basis(N,0) + qt.basis(N,4))/np.sqrt(2.0) mz = qt.basis(N,2) py = (pz + 1j*mz)/np.sqrt(2.0) target_state = qt.tensor(qt.basis(2,0), py) if 0: # GKP target_state_cav = qt.qload('E:\data\gkp_sims\PPO\ECD\GKP_state_delta_0p25') target_state = qt.tensor(qt.basis(2,0), target_state_cav) N = target_state_cav.dims[0][0] # 200 # reward_kwargs = {'reward_mode' : 'tomography',
""" Created on Tue Feb 19 14:42:03 2019 @author: z5239621 """ import qutip as qt import numpy as np import operations as ops # Define some initail parameters N = 10 eps = 1 + 1j #D = qt.displace(N, 1) S = qt.squeeze(N, eps) vacuum = qt.basis(N) state = S*vacuum print("State", state) print("<S>", ops.mean_homodyne(state, np.pi/2)) print("<S^2>", ops.var_homodyne(state, 0)) print("<S^2>", ops.var_homodyne(state, np.pi/2)) print(np.exp(-2*np.abs(eps))*N)
def test_squeezing(): squeeze = qutip.squeeze(4, 0.1 + 0.1j) a = qutip.destroy(4) squeezing = qutip.squeezing(a, a, 0.1 + 0.1j) assert squeeze == squeezing
Created on Mon Apr 1 14:48:35 2019 @author: Eduardo Villasenor """ import qutip as qt import matplotlib.pyplot as plt import numpy as np r = 3 print("Mean photon number:", np.sinh(r)**2) # N = 10 N = 10 a = qt.basis(N, 0) Sa = qt.squeeze(N, r) # N = 20 N = 20 b = qt.basis(N, 0) Sb = qt.squeeze(N, r) # N = 30 N = 50 c = qt.basis(N, 0) Sc = qt.squeeze(N, r) fig, axes = plt.subplots(1, 3, figsize=(12, 3)) qt.plot_fock_distribution(Sa * a, fig=fig, ax=axes[0],