paddle_quantum.utils module¶
-
paddle_quantum.utils.
partial_trace
(rho_AB, dim1, dim2, A_or_B)¶ 计算量子态的偏迹。
参数: - rho_AB (ComplexVariable) – 输入的量子态
- dim1 (int) – 系统A的维数
- dim2 (int) – 系统B的维数
- A_or_B (int) – 1或者2,1表示去除A,2表示去除B
返回: 量子态的偏迹
返回类型: ComplexVariable
-
paddle_quantum.utils.
state_fidelity
(rho, sigma)¶ 计算两个量子态的保真度。
\[F(\rho, \sigma) = \text{tr}(\sqrt{\sqrt{\rho}\sigma\sqrt{\rho}})\]参数: - rho (numpy.ndarray) – 量子态的密度矩阵形式
- sigma (numpy.ndarray) – 量子态的密度矩阵形式
返回: 输入的量子态之间的保真度
返回类型: float
-
paddle_quantum.utils.
gate_fidelity
(U, V)¶ 计算两个量子门的保真度。
\[F(U, V) = |\text{tr}(UV^\dagger)|/2^n\]\(U\) 是一个 \(2^n\times 2^n\) 的 Unitary 矩阵。
参数: - U (numpy.ndarray) – 量子门的酉矩阵形式
- V (numpy.ndarray) – 量子门的酉矩阵形式
返回: 输入的量子门之间的保真度
返回类型: float
-
paddle_quantum.utils.
purity
(rho)¶ 计算量子态的纯度。
\[P = \text{tr}(\rho^2)\]参数: rho (numpy.ndarray) – 量子态的密度矩阵形式 返回: 输入的量子态的纯度 返回类型: float
-
paddle_quantum.utils.
von_neumann_entropy
(rho)¶ 计算量子态的冯诺依曼熵。
\[S = -\text{tr}(\rho \log(\rho))\]参数: rho (numpy.ndarray) – 量子态的密度矩阵形式 返回: 输入的量子态的冯诺依曼熵 返回类型: float
-
paddle_quantum.utils.
relative_entropy
(rho, sig)¶ 计算两个量子态的相对熵。
\[S(\rho \| \sigma)=\text{tr} \rho(\log \rho-\log \sigma)\]参数: - rho (numpy.ndarray) – 量子态的密度矩阵形式
- sig (numpy.ndarray) – 量子态的密度矩阵形式
返回: 输入的量子态之间的相对熵
返回类型: float
-
paddle_quantum.utils.
NKron
(matrix_A, matrix_B, *args)¶ 计算两个及以上的矩阵的Kronecker积。
参数: - matrix_A (numpy.ndarray) – 一个矩阵
- matrix_B (numpy.ndarray) – 一个矩阵
- *args (numpy.ndarray) – 其余矩阵
返回: 输入矩阵的Kronecker积
返回类型: ComplexVariable
from paddle_quantum.state import density_op_random from paddle_quantum.utils import NKron A = density_op_random(2) B = density_op_random(2) C = density_op_random(2) result = NKron(A, B, C)
result
应为: \(A \otimes B \otimes C\)
-
paddle_quantum.utils.
dagger
(matrix)¶ 计算矩阵的埃尔米特转置,即Hermitian transpose。
参数: matrix (ComplexVariable) – 需要埃尔米特转置的矩阵 返回: 输入矩阵的埃尔米特转置 返回类型: ComplexVariable 代码示例:
from paddle_quantum.utils import dagger from paddle import fluid import numpy as np with fluid.dygraph.guard(): rho = fluid.dygraph.to_variable(np.array([[1+1j, 2+2j], [3+3j, 4+4j]])) print(dagger(rho).numpy())
[[1.-1.j 3.-3.j] [2.-2.j 4.-4.j]]
-
paddle_quantum.utils.
random_pauli_str_generator
(n, terms=3)¶ 随机生成一个可观测量(observable)的列表(
list
)形式。一个可观测量 \(O=0.3X\otimes I\otimes I+0.5Y\otimes I\otimes Z\) 的 列表形式为
[[0.3, 'x0'], [0.5, 'y0,z2']]
。这样一个可观测量是由 调用random_pauli_str_generator(3, terms=2)
生成的。参数: - n (int) – 量子比特数量
- terms (int, optional) – 可观测量的项数
返回: 随机生成的可观测量的列表形式
返回类型: list
-
paddle_quantum.utils.
pauli_str_to_matrix
(pauli_str, n)¶ 将输入的可观测量(observable)的列表(
list
)形式转换为其矩阵形式。如输入的
pauli_str
为[[0.7, 'z0,x1'], [0.2, 'z1']]
且n=3
, 则此函数返回可观测量 \(0.7Z\otimes X\otimes I+0.2I\otimes Z\otimes I\) 的 矩阵形式。参数: - pauli_str (list) – 一个可观测量的列表形式
- n (int) – 量子比特数量
返回: 输入列表对应的可观测量的矩阵形式
返回类型: numpy.ndarray