mindquantum.core.operators.QubitExcitationOperator
- class mindquantum.core.operators.QubitExcitationOperator(term=None, coefficient=1.0)[源代码]
量子比特激发算子定义为: \(Q^{\dagger}_{n} = \frac{1}{2} (X_{n} - iY_{n})\) 和 \(Q_{n} = \frac{1}{2} (X_{n} + iY_{n})\) 。 与费米子激发算子相比,量子比特激发算子是某种“局部化”的,即费米子激发算子 \(a^{\dagger}_{7} a_{0}\) 涉及到JW变换下从0到7的量子比特, 而量子比特激发 \(Q^{\dagger}_{7} Q_{0}\) 只会影响第0和第7个量子比特。 此外,用量子比特激发算子描述双激发所使用的CNOT门比相应的费米子激发算子少得多。
- 参数:
terms (Union[str, tuple]) - 量子比特激发算子的输入项。默认值:
None
。coefficient (Union[numbers.Number, str, ParameterResolver]) - 相应单个运算符的系数。默认值:
1.0
。
样例:
>>> from mindquantum.algorithm.nisq import Transform >>> from mindquantum.core.operators import QubitExcitationOperator >>> op = QubitExcitationOperator(((4, 1), (1, 0), (0, 0)), 2.5) >>> op 5/2 [Q4^ Q1 Q0] >>> op.fermion_operator 5/2 [4^ 1 0] >>> op.to_qubit_operator() 5/16 [X0 X1 X4] + (-0.3125j) [X0 X1 Y4] + (5/16j) [X0 Y1 X4] + 5/16 [X0 Y1 Y4] + (5/16j) [Y0 X1 X4] + 5/16 [Y0 X1 Y4] + -0.3125 [Y0 Y1 X4] + (5/16j) [Y0 Y1 Y4] >>> Transform(op.fermion_operator).jordan_wigner() 5/16 [X0 X1 Z2 Z3 X4] + (-0.3125j) [X0 X1 Z2 Z3 Y4] + (5/16j) [X0 Y1 Z2 Z3 X4] + 5/16 [X0 Y1 Z2 Z3 Y4] + (5/16j) [Y0 X1 Z2 Z3 X4] + 5/16 [Y0 X1 Z2 Z3 Y4] + -0.3125 [Y0 Y1 Z2 Z3 X4] + (5/16j) [Y0 Y1 Z2 Z3 Y4]
- property imag
该算符的虚部。
- 返回:
QubitExcitationOperator,保留原始算符虚部的量子比特激发算符。
样例:
>>> from mindquantum.core.operators import QubitExcitationOperator >>> f = QubitExcitationOperator(((1, 0),), 1 + 2j) >>> f += QubitExcitationOperator(((1, 1),), 'a') >>> f.imag.compress() 2 [Q1]
- normal_ordered()[源代码]
按照比特序号由小到大排列量子比特激发算符。
说明
与费米子不同,玻色子交换不需要乘系数-1。
- 返回:
QubitExcitationOperator,正规排序后的量子比特激发算符。
样例:
>>> from mindquantum.core.operators import QubitExcitationOperator >>> op = QubitExcitationOperator("7 1^") >>> op 1 [Q7 Q1^] >>> op.normal_ordered() 1 [Q1^ Q7]
- property real
该算符的实部。
- 返回:
QubitExcitationOperator,保留原始算符实部的量子比特激发算符。
样例:
>>> from mindquantum.core.operators import QubitExcitationOperator >>> f = QubitExcitationOperator(((1, 0),), 1 + 2j) >>> f += QubitExcitationOperator(((1, 1),), 'a') >>> f.real.compress() 1 [Q1] + a [Q1^]