Пример #1
0
def qmid(rho, dim_A = 2, dim_B = 2) :
	rho_A = density_matrix.partial_trace(rho, 2, dim_A, dim_B)
	rho_B = density_matrix.partial_trace(rho, 1, dim_A, dim_B)

	val_A, vec_A = np.linalg.eig(rho_A)
	val_B, vec_B = np.linalg.eig(rho_B)

	pi = list()
	for v_A in vec_A :
		for v_B in vec_B:
			pi.append(np.kron(proj(v_A.T), proj(v_B.T)))

	_rho = np.zeros_like(rho)
	for p in pi :
		_rho += p * rho * p

	return density_matrix.I(rho, dim_A, dim_B) - density_matrix.I(_rho, dim_A, dim_B)
Пример #2
0
def T(rho_AB, theta, phi, dim_A = 2, dim_B = 2, qubit_subsys = 2) :
	_basis = [None for i in range(2)]
	_x = np.cos (theta)
	_y = np.sin (theta)
	_basis[0] = np.mat([[_x], [np.exp(1j * phi) * _y]])
	_basis[1] = np.mat([[_y], [-np.exp(1j * phi) * _x]])

	t = 0

	for i in range(len(_basis)):
		if (qubit_subsys == 1) :
			_op = np.kron(projector(_basis[i]), np.eye(dim_B))
		else:
			_op = np.kron(np.eye(dim_A), projector(_basis[i]))

		_rho = _op * rho_AB
#		_rho = _op * rho_AB * _op

		p = np.trace(_rho).real
		if (p != 0) :
			_rho_reduced = density_matrix.partial_trace(_rho, qubit_subsys , dim_A = dim_A, dim_B = dim_B) / p
			t += p * density_matrix.S(_rho_reduced)

	return t
Пример #3
0
		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'
		_title = 'Walk on line with nodes = '+ str(options.nodes)

	for k in output_list_dict.keys() :
		_y = output_list_dict[k]
		plt.plot(_x, _y, label = k)