Esempio n. 1
0
	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'
Esempio n. 2
0
	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()