Skip to main content
IBM Quantum Platform

double_commutator

double_commutator(op_a, op_b, op_c, sign)

세 개의 연산자에 대한 이중 교환자를 계산합니다.

이중 교환자는 다음과 같이 정의된다(또한 의 장 13.6운동 방정식 기법, 479쪽을 참조; [1] 의 경우는 sign=False 의 식 (2)에 [A,B,C][A, B, C] 등장하는 대칭 이중 교환자 이다) [2]:

가 일 sign 경우 False, 다음을 반환합니다

[[A,B],C]/2+[A,[B,C]]/2=(2ABC+2CBABACCABACBBCA)/2.[[A, B], C]/2 + [A, [B, C]]/2 = (2ABC + 2CBA - BAC - CAB - ACB - BCA)/2.

가 일 sign 경우 True, 다음을 반환합니다

{[A,B],C}/2+{A,[B,C]}/2=(2ABC2CBABAC+CABACB+BCA)/2.\{[A, B], C\}/2 + \{A, [B, C]\}/2 = (2ABC - 2CBA - BAC + CAB - ACB + BCA)/2.

이 메서드를 지원하는 연산자는 해당 SupportsCommutators 프로토콜을 구현해야 합니다.

참고

세 개의 입력 모두 동일한 연산자 유형이어야 합니다. 이는 출력 유형도 결정하게 됩니다.

>>> from qiskit_fermions.operators import FermionOperator
>>> from qiskit_fermions.operators.library import double_commutator
>>> op1 = FermionOperator.from_dict({((True, 0), (False, 0)): 1})
>>> op2 = FermionOperator.from_dict({((False, 0), (True, 0)): 2})
>>> op3 = FermionOperator.from_dict(
...     {((True, 0), (False, 0)): 1, ((False, 0), (True, 0)): 2 + 0.5j}
... )
>>> comm = double_commutator(op1, op2, op3, False)
>>> comm = comm.normal_ordered()
>>> canon = comm.simplify()
>>> assert canon == FermionOperator.zero()

[ 1 ]

R. McWeeny. 분자 양자역학의 방법론. 제2판, Academic Press, 1992. ISBN 0-12-486552-6.

[ 2 ]

P. J. 올리트롤트, A. 미센, I. 타베르넬리. 분자 양자 역학: 양자 컴퓨팅의 관점. Acc. 화학. 예약 54, 4229-4238 (2021). https://doi.org/10.1021/acs.accounts.1c00514

매개변수

  • op_a (T) – 위의 연산자 AA.
  • op_b (T) – 위의 연산자 BB.
  • op_c (T) – 위의 연산자 CC.
  • sign (bool) – 위의 정의에 따른 외적 (반)교환자의 성질.

리턴

위 정의에 따른 이중커뮤테이터.

리턴 유형

T

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.