Ejemplo n.º 1
0
 def term_func(Uk):
     UkH = Uk.conj().T
     res = 0.
     for sig in sigs:
         red = reduce(np.dot, [Uf, sig, UfH, Uk, sig, UkH])
         res += np.trace(red)
     return res
Ejemplo n.º 2
0
def fidSingleTxFull(rho_0, rho_f, T, N, Us):
    U_k_ts = [np.array(U_k(T), np.complex128) for U_k in Us]
    mats = [
        np.dot(np.dot(rho_f.conj().T, U_k_t), np.dot(rho_0,
                                                     U_k_t.conj().T))
        for U_k_t in U_k_ts
    ]
    terms = [np.trace(mat) for mat in mats]
    return (1. / N) * sum(terms)
Ejemplo n.º 3
0
Archivo: q1.py Proyecto: wiwa/qc
 def makeTerm(k):
     # U_k = Us_mk[k]
     # Us_nm_k = U_k[m:(n-1)]
     # # Us_nm_k.reverse()
     # Us_m1_k = U_k[0:(m-1)]
     # # Us_m1_k.reverse()
     #
     # U_nm_k = reduce(np.dot, reversed(Us_nm_k),identity)
     # U_nm_kH = U_nm_k.conj().T
     # U_m1_k = reduce(np.dot, reversed(Us_m1_k),identity)
     # U_m1_kH = U_m1_k.conj().T
     #
     # lambda_mk = reduce(np.dot, [U_nm_kH, rho_f, U_nm_k])
     # lambda_H = lambda_mk.conj().T
     # rho_mk = reduce(np.dot, [U_m1_k, rho_0, U_m1_kH])
     U_k = Us_mk[k]
     lambda_mk = makeLambda_mk(U_k, m, rho_f)
     lambda_H = lambda_mk.conj().T
     rho_mk = makeRho_mk(U_k, m, rho_0)
     term = np.trace(np.dot(lambda_H, comm(sigmaX, rho_mk)))
     return term
Ejemplo n.º 4
0
def fidSingleTxDirect(rho_f, rho, T):
    return np.trace(np.dot(rho_f.conj().T, rho(T)))
Ejemplo n.º 5
0
def fidSingleTxDirect(rho_f, rho, T):
    return np.trace(rho_f.H * rho(T))
Ejemplo n.º 6
0
 def fidelity(self, rho_f):
     return np.trace(rho_f.H * self.at(self.pulse_end_time))