本文整理汇总了Python中qutip.random_objects.rand_dm函数的典型用法代码示例。如果您正苦于以下问题:Python rand_dm函数的具体用法?Python rand_dm怎么用?Python rand_dm使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了rand_dm函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test_super_tensor_operket
def test_super_tensor_operket():
"""
Tensor: Checks that super_tensor respects states.
"""
rho1, rho2 = rand_dm(5), rand_dm(7)
operator_to_vector(rho1)
operator_to_vector(rho2)
开发者ID:arnelg,项目名称:qutip,代码行数:7,代码来源:test_qobj.py
示例2: test_QobjPermute
def test_QobjPermute():
"Qobj permute"
A = basis(5, 0)
B = basis(5, 4)
C = basis(5, 2)
psi = tensor(A, B, C)
psi2 = psi.permute([2, 0, 1])
assert_(psi2 == tensor(C, A, B))
A = fock_dm(5, 0)
B = fock_dm(5, 4)
C = fock_dm(5, 2)
rho = tensor(A, B, C)
rho2 = rho.permute([2, 0, 1])
assert_(rho2 == tensor(C, A, B))
for ii in range(3):
A = rand_ket(5)
B = rand_ket(5)
C = rand_ket(5)
psi = tensor(A, B, C)
psi2 = psi.permute([1, 0, 2])
assert_(psi2 == tensor(B, A, C))
for ii in range(3):
A = rand_dm(5)
B = rand_dm(5)
C = rand_dm(5)
rho = tensor(A, B, C)
rho2 = rho.permute([1, 0, 2])
assert_(rho2 == tensor(B, A, C))
开发者ID:PhilipVinc,项目名称:qutip,代码行数:31,代码来源:test_qobj.py
示例3: test_fidelity1
def test_fidelity1():
"""
Metrics: Fidelity, mixed state inequality
"""
for k in range(10):
rho1 = rand_dm(25, 0.25)
rho2 = rand_dm(25, 0.25)
F = fidelity(rho1, rho2)
assert_(1-F <= sqrt(1-F**2))
开发者ID:QuantumLambda,项目名称:qutip,代码行数:9,代码来源:test_metrics.py
示例4: test_tracedist2
def test_tracedist2():
"""
Metrics: Trace dist. & Fidelity mixed/mixed inequality
"""
for k in range(10):
rho1 = rand_dm(25, 0.25)
rho2 = rand_dm(25, 0.25)
F = fidelity(rho1, rho2)
D = tracedist(rho1, rho2)
assert_(1-F <= D)
开发者ID:QuantumLambda,项目名称:qutip,代码行数:10,代码来源:test_metrics.py
示例5: test_QobjPermute
def test_QobjPermute():
"Qobj permute"
A = basis(3, 0)
B = basis(5, 4)
C = basis(4, 2)
psi = tensor(A, B, C)
psi2 = psi.permute([2, 0, 1])
assert_(psi2 == tensor(C, A, B))
psi_bra = psi.dag()
psi2_bra = psi_bra.permute([2, 0, 1])
assert_(psi2_bra == tensor(C, A, B).dag())
A = fock_dm(3, 0)
B = fock_dm(5, 4)
C = fock_dm(4, 2)
rho = tensor(A, B, C)
rho2 = rho.permute([2, 0, 1])
assert_(rho2 == tensor(C, A, B))
for ii in range(3):
A = rand_ket(3)
B = rand_ket(4)
C = rand_ket(5)
psi = tensor(A, B, C)
psi2 = psi.permute([1, 0, 2])
assert_(psi2 == tensor(B, A, C))
psi_bra = psi.dag()
psi2_bra = psi_bra.permute([1, 0, 2])
assert_(psi2_bra == tensor(B, A, C).dag())
for ii in range(3):
A = rand_dm(3)
B = rand_dm(4)
C = rand_dm(5)
rho = tensor(A, B, C)
rho2 = rho.permute([1, 0, 2])
assert_(rho2 == tensor(B, A, C))
rho_vec = operator_to_vector(rho)
rho2_vec = rho_vec.permute([[1, 0, 2],[4,3,5]])
assert_(rho2_vec == operator_to_vector(tensor(B, A, C)))
rho_vec_bra = operator_to_vector(rho).dag()
rho2_vec_bra = rho_vec_bra.permute([[1, 0, 2],[4,3,5]])
assert_(rho2_vec_bra == operator_to_vector(tensor(B, A, C)).dag())
for ii in range(3):
super_dims = [3, 5, 4]
U = rand_unitary(np.prod(super_dims), density=0.02, dims=[super_dims, super_dims])
Unew = U.permute([2,1,0])
S_tens = to_super(U)
S_tens_new = to_super(Unew)
assert_(S_tens_new == S_tens.permute([[2,1,0],[5,4,3]]))
开发者ID:arnelg,项目名称:qutip,代码行数:55,代码来源:test_qobj.py
示例6: test_tracedist1
def test_tracedist1():
"""
Metrics: Trace dist., invariance under unitary trans.
"""
for k in range(10):
rho1 = rand_dm(25, 0.25)
rho2 = rand_dm(25, 0.25)
U = rand_unitary(25, 0.25)
D = tracedist(rho1, rho2)
DU = tracedist(U*rho1*U.dag(), U*rho2*U.dag())
assert_(abs((D-DU)/D) < 1e-5)
开发者ID:QuantumLambda,项目名称:qutip,代码行数:11,代码来源:test_metrics.py
示例7: test_fidelity2
def test_fidelity2():
"""
Metrics: Fidelity, invariance under unitary trans.
"""
for k in range(10):
rho1 = rand_dm(25, 0.25)
rho2 = rand_dm(25, 0.25)
U = rand_unitary(25, 0.25)
F = fidelity(rho1, rho2)
FU = fidelity(U*rho1*U.dag(), U*rho2*U.dag())
assert_(abs((F-FU)/F) < 1e-5)
开发者ID:QuantumLambda,项目名称:qutip,代码行数:11,代码来源:test_metrics.py
示例8: test_wigner_compare_methods_dm
def test_wigner_compare_methods_dm():
"wigner: compare wigner methods for random density matrices"
xvec = np.linspace(-5.0, 5.0, 100)
yvec = xvec
X, Y = np.meshgrid(xvec, yvec)
# a = X + 1j * Y # consistent with g=2 option to wigner function
dx = xvec[1] - xvec[0]
dy = yvec[1] - yvec[0]
N = 15
for n in range(10):
# try ten different random density matrices
rho = rand_dm(N, 0.5 + rand() / 2)
# calculate the wigner function using qutip and analytic formula
W_qutip1 = wigner(rho, xvec, yvec, g=2)
W_qutip2 = wigner(rho, xvec, yvec, g=2, method='laguerre')
# check difference
assert_(np.sum(abs(W_qutip1 - W_qutip1)) < 1e-4)
# check normalization
assert_(np.sum(W_qutip1) * dx * dy - 1.0 < 1e-8)
assert_(np.sum(W_qutip2) * dx * dy - 1.0 < 1e-8)
开发者ID:JonathanUlm,项目名称:qutip,代码行数:30,代码来源:test_wigner.py
示例9: test_trunc_neg
def test_trunc_neg():
"""
Test Qobj: Checks trunc_neg in several different cases.
"""
@has_description
def case(qobj, method, expected=None):
pos_qobj = qobj.trunc_neg(method=method)
assert(all([energy > -1e-8 for energy in pos_qobj.eigenenergies()]))
assert_almost_equal(pos_qobj.tr(), 1)
if expected is not None:
assert_almost_equal(pos_qobj.data.todense(), expected.data.todense())
for method in ('clip', 'sgs'):
# Make sure that it works for operators that are already positive.
yield case("Test Qobj: trunc_neg works for positive opers."), \
rand_dm(5), method
# Make sure that it works for a diagonal matrix.
yield case("Test Qobj: trunc_neg works for diagonal opers."), \
Qobj(np.diag([1.1, -0.1])), method, Qobj(np.diag([1.0, 0.0]))
# Make sure that it works for a non-diagonal matrix.
U = rand_unitary(3)
yield case("Test Qobj: trunc_neg works for non-diagonal opers."), \
U * Qobj(np.diag([1.1, 0, -0.1])) * U.dag(), \
method, \
U * Qobj(np.diag([1.0, 0.0, 0.0])) * U.dag()
# Check the test case in SGS.
yield (
case("Test Qobj: trunc_neg works for SGS known-good test case."),
Qobj(np.diag([3. / 5, 1. / 2, 7. / 20, 1. / 10, -11. / 20])), 'sgs',
Qobj(np.diag([9. / 20, 7. / 20, 1. / 5, 0, 0]))
)
开发者ID:arnelg,项目名称:qutip,代码行数:34,代码来源:test_qobj.py
示例10: test_composite_vec
def test_composite_vec():
"""
Composite: Tests compositing states and density operators.
"""
k1 = rand_ket(5)
k2 = rand_ket(7)
r1 = operator_to_vector(ket2dm(k1))
r2 = operator_to_vector(ket2dm(k2))
r3 = operator_to_vector(rand_dm(3))
r4 = operator_to_vector(rand_dm(4))
assert_(composite(k1, k2) == tensor(k1, k2))
assert_(composite(r3, r4) == super_tensor(r3, r4))
assert_(composite(k1, r4) == super_tensor(r1, r4))
assert_(composite(r3, k2) == super_tensor(r3, r2))
开发者ID:arnelg,项目名称:qutip,代码行数:16,代码来源:test_qobj.py
示例11: test_sparse_nonsymmetric_reverse_permute
def test_sparse_nonsymmetric_reverse_permute():
"Sparse: Nonsymmetric Reverse Permute"
# CSR square array check
A = rand_dm(25, 0.5)
rperm = np.random.permutation(25)
cperm = np.random.permutation(25)
x = sp_permute(A.data, rperm, cperm)
B = sp_reverse_permute(x, rperm, cperm)
assert_equal((A.full() - B.toarray()).all(), 0)
# CSC square array check
A = rand_dm(25, 0.5)
rperm = np.random.permutation(25)
cperm = np.random.permutation(25)
B = A.data.tocsc()
x = sp_permute(B, rperm, cperm)
B = sp_reverse_permute(x, rperm, cperm)
assert_equal((A.full() - B.toarray()).all(), 0)
# CSR column vector check
A = coherent(25, 1)
rperm = np.random.permutation(25)
x = sp_permute(A.data, rperm, [])
B = sp_reverse_permute(x, rperm, [])
assert_equal((A.full() - B.toarray()).all(), 0)
# CSC column vector check
A = coherent(25, 1)
rperm = np.random.permutation(25)
B = A.data.tocsc()
x = sp_permute(B, rperm, [])
B = sp_reverse_permute(x, rperm, [])
assert_equal((A.full() - B.toarray()).all(), 0)
# CSR row vector check
A = coherent(25, 1).dag()
cperm = np.random.permutation(25)
x = sp_permute(A.data, [], cperm)
B = sp_reverse_permute(x, [], cperm)
assert_equal((A.full() - B.toarray()).all(), 0)
# CSC row vector check
A = coherent(25, 1).dag()
cperm = np.random.permutation(25)
B = A.data.tocsc()
x = sp_permute(B, [], cperm)
B = sp_reverse_permute(x, [], cperm)
assert_equal((A.full() - B.toarray()).all(), 0)
开发者ID:Marata459,项目名称:qutip,代码行数:43,代码来源:test_sparse.py
示例12: test_tracedist3
def test_tracedist3():
"""
Metrics: Trace dist. & Fidelity mixed/pure inequality
"""
for k in range(10):
ket = rand_ket(25, 0.25)
rho1 = ket*ket.dag()
rho2 = rand_dm(25, 0.25)
F = fidelity(rho1, rho2)
D = tracedist(rho1, rho2)
assert_(1-F**2 <= D)
开发者ID:QuantumLambda,项目名称:qutip,代码行数:11,代码来源:test_metrics.py
示例13: test_fid_trdist_limits
def test_fid_trdist_limits():
"""
Metrics: Fidelity / trace distance limiting cases
"""
rho = rand_dm(25, 0.25)
assert_(abs(fidelity(rho, rho)-1) < 1e-6)
assert_(tracedist(rho, rho) < 1e-6)
rho1 = fock_dm(5, 1)
rho2 = fock_dm(5, 2)
assert_(fidelity(rho1, rho2) < 1e-6)
assert_(abs(tracedist(rho1, rho2)-1) < 1e-6)
开发者ID:QuantumLambda,项目名称:qutip,代码行数:11,代码来源:test_metrics.py
示例14: test_wigner_fft_comparse_dm
def test_wigner_fft_comparse_dm():
"Wigner: Compare Wigner fft and iterative for rand. dm"
N = 20
xvec = np.linspace(-10, 10, 128)
for i in range(3):
rho = rand_dm(N)
Wfft, yvec = wigner(rho, xvec, xvec, method='fft')
W = wigner(rho, xvec, yvec, method='iterative')
Wdiff = abs(W - Wfft)
assert_equal(np.sum(abs(Wdiff)) < 1e-7, True)
开发者ID:JonathanUlm,项目名称:qutip,代码行数:12,代码来源:test_wigner.py
示例15: test_csr_kron
def test_csr_kron():
"spmath: zcsr_kron"
for kk in range(10):
ra = np.random.randint(2,100)
rb = np.random.randint(2,100)
A = rand_herm(ra,0.5).data
B = rand_herm(rb,0.5).data
As = A.tocsr(1)
Bs = B.tocsr(1)
C = sp.kron(As,Bs, format='csr')
D = zcsr_kron(A, B)
assert_almost_equal(C.data, D.data)
assert_equal(C.indices, D.indices)
assert_equal(C.indptr, D.indptr)
for kk in range(10):
ra = np.random.randint(2,100)
rb = np.random.randint(2,100)
A = rand_ket(ra,0.5).data
B = rand_herm(rb,0.5).data
As = A.tocsr(1)
Bs = B.tocsr(1)
C = sp.kron(As,Bs, format='csr')
D = zcsr_kron(A, B)
assert_almost_equal(C.data, D.data)
assert_equal(C.indices, D.indices)
assert_equal(C.indptr, D.indptr)
for kk in range(10):
ra = np.random.randint(2,100)
rb = np.random.randint(2,100)
A = rand_dm(ra,0.5).data
B = rand_herm(rb,0.5).data
As = A.tocsr(1)
Bs = B.tocsr(1)
C = sp.kron(As,Bs, format='csr')
D = zcsr_kron(A, B)
assert_almost_equal(C.data, D.data)
assert_equal(C.indices, D.indices)
assert_equal(C.indptr, D.indptr)
for kk in range(10):
ra = np.random.randint(2,100)
rb = np.random.randint(2,100)
A = rand_ket(ra,0.5).data
B = rand_ket(rb,0.5).data
As = A.tocsr(1)
Bs = B.tocsr(1)
C = sp.kron(As,Bs, format='csr')
D = zcsr_kron(A, B)
assert_almost_equal(C.data, D.data)
assert_equal(C.indices, D.indices)
assert_equal(C.indptr, D.indptr)
开发者ID:anubhavvardhan,项目名称:qutip,代码行数:53,代码来源:test_spmath.py
示例16: test_sparse_symmetric_permute
def test_sparse_symmetric_permute():
"Sparse: Symmetric Permute"
# CSR version
A = rand_dm(25, 0.5)
perm = np.random.permutation(25)
x = sp_permute(A.data, perm, perm).toarray()
z = _permutateIndexes(A.full(), perm, perm)
assert_equal((x - z).all(), 0)
# CSC version
B = A.data.tocsc()
y = sp_permute(B, perm, perm).toarray()
assert_equal((y - z).all(), 0)
开发者ID:Marata459,项目名称:qutip,代码行数:12,代码来源:test_sparse.py
示例17: test_wigner_clenshaw_sp_iter_dm
def test_wigner_clenshaw_sp_iter_dm():
"Wigner: Compare Wigner sparse clenshaw and iterative for rand. dm"
N = 20
xvec = np.linspace(-10, 10, 128)
for i in range(3):
rho = rand_dm(N)
Wclen = wigner(rho, xvec, xvec, method='clenshaw', sparse=True)
W = wigner(rho, xvec, xvec, method='iterative')
Wdiff = abs(W - Wclen)
assert_equal(np.sum(abs(Wdiff)) < 1e-7, True)
开发者ID:qutip,项目名称:qutip,代码行数:12,代码来源:test_wigner.py
示例18: test_SimpleSingleApply
def test_SimpleSingleApply(self):
"""
Non-composite system, operator on Hilbert space.
"""
rho_3 = rand_dm(3)
single_op = rand_unitary(3)
analytic_result = single_op * rho_3 * single_op.dag()
naive_result = subsystem_apply(rho_3, single_op, [True],
reference=True)
efficient_result = subsystem_apply(rho_3, single_op, [True])
naive_diff = (analytic_result - naive_result).data.todense()
efficient_diff = (efficient_result - analytic_result).data.todense()
assert_(norm(naive_diff) < 1e-12 and norm(efficient_diff) < 1e-12)
开发者ID:argriffing,项目名称:qutip,代码行数:13,代码来源:test_subsystem_apply.py
示例19: steady_nonlinear
def steady_nonlinear(L_func, rho0, args={}, maxiter=10,
random_initial_state=False,
tol=1e-6, itertol=1e-5, use_umfpack=True):
"""
Steady state for the evolution subject to the nonlinear Liouvillian
(which depends on the density matrix).
.. note:: Experimental. Not at all certain that the inverse power method
works for state-dependent liouvillian operators.
"""
use_solver(assumeSortedIndices=True, useUmfpack=use_umfpack)
if random_initial_state:
rhoss = rand_dm(rho0.shape[0], 1.0, dims=rho0.dims)
elif isket(rho0):
rhoss = ket2dm(rho0)
else:
rhoss = Qobj(rho0)
v = mat2vec(rhoss.full())
n = prod(rhoss.shape)
tr_vec = sp.eye(rhoss.shape[0], rhoss.shape[0], format='lil')
tr_vec = tr_vec.reshape((1, n)).tocsr()
it = 0
while it < maxiter:
L = L_func(rhoss, args)
L = L.data.tocsc() - (tol ** 2) * sp.eye(n, n, format='csc')
L.sort_indices()
v = spsolve(L, v, permc_spec="MMD_AT_PLUS_A", use_umfpack=use_umfpack)
v = v / la.norm(v, np.inf)
data = v / sum(tr_vec.dot(v))
data = reshape(data, (rhoss.shape[0], rhoss.shape[1])).T
rhoss.data = sp.csr_matrix(data)
it += 1
if la.norm(L * v, np.inf) <= tol:
break
if it >= maxiter:
raise ValueError('Failed to find steady state after ' +
str(maxiter) + ' iterations')
#rhoss.data = 0.5 * (data + data.conj().T)
return rhoss.tidyup() if qset.auto_tidyup else rhoss
开发者ID:markusbaden,项目名称:qutip,代码行数:50,代码来源:steady.py
示例20: test_sparse_symmetric_reverse_permute
def test_sparse_symmetric_reverse_permute():
"Sparse: Symmetric Reverse Permute"
# CSR version
A = rand_dm(25, 0.5)
perm = np.random.permutation(25)
x = sp_permute(A.data, perm, perm)
B = sp_reverse_permute(x, perm, perm)
assert_equal((A.full() - B.toarray()).all(), 0)
# CSC version
B = A.data.tocsc()
perm = np.random.permutation(25)
x = sp_permute(B, perm, perm)
B = sp_reverse_permute(x, perm, perm)
assert_equal((A.full() - B.toarray()).all(), 0)
开发者ID:Marata459,项目名称:qutip,代码行数:14,代码来源:test_sparse.py
注:本文中的qutip.random_objects.rand_dm函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论