for lamda in lamda_space: E = [None for i in range(2)] E[0] = np.kron(np.mat([[ np.sqrt(1 - lamda), 0], [0, 1]]), pos_space.I) E[1] = np.kron(np.mat([[0, 0], [np.sqrt(lamda), 0]]), pos_space.I) print_v ("Nodes : ", nodes, " Lambda = ", lamda) rho_CP = walk.do(nodes, E) if (options.qd_needed) : _qd = discord.T_min(rho_CP, dim_A, dim_B, qubit_subsys = 1) - dm.S_cond(rho_CP, (2, 1), dim_A, dim_B).real output_list_dict['QD'].append(_qd) print_v ("\tQD = ", _qd) if (options.qmid_needed) : _qm = qmid.qmid(rho_CP, dim_A, dim_B) output_list_dict['QMID'].append(_qm) print_v ("\tQMID = ", _qm) if (options.verbose > 1) : rho_P = dm.partial_trace(rho_CP, subsys = 1, dim_B = len(pos_space), dim_A = len(coin_space)) print_v ("\tProbabilities : ", np.diag(rho_P), ". Sum = ", np.trace(rho_P)) if (options.graphical) : if options.node_range is not None : _x = nodes_space _label = 'Nodes' _title = 'Walk on line with lamda = ' + str(options.lamda) elif options.lamda_range is not None : _x = lamda_space _label = 'Noise Parameter'
return v * v.H #Entangled rho_AB = np.mat('0.5 0 0 0.5; 0 0 0 0; 0 0 0 0; 0.5 0 0 0.5') ZERO = np.mat('1;0') ONE = np.mat('0;1') singlet = (np.kron(ZERO, ZERO) - np.kron(ONE, ONE)) / np.sqrt(2) bell = [None for i in range(3)] bell[0] = (np.kron(ONE, ZERO) + np.kron(ZERO, ONE)) / np.sqrt(2) bell[1] = (np.kron(ONE, ZERO) - np.kron(ZERO, ONE)) / np.sqrt(2) bell[2] = (np.kron(ZERO, ZERO) + np.kron(ONE, ONE)) / np.sqrt(2) f_range = np.linspace(0, 1, 30) values = list() for f in f_range : if (f != 0): rho = f * singlet * singlet.H else: rho = np.zeros((4, 4)) for i in range(3) : rho += ((1 - f) / len(bell)) * bell[i] * bell[i].H values.append(qmid.qmid(rho)) plt.plot(f_range, values) plt.show()