费米子算符类

我们用如下的记号标识来表示费米子的两个形态, 湮没: \(X\) 表示 \(a_x\) , 创建: \(X +\) 表示 \(a_x^\dagger\) , 例如: "1 + 3 5 + 1"则代表 \(a_1^\dagger \ a_3 \ a_5^\dagger \ a_1\)

整理规则如下

1. 不同数字

\[''1\quad 2'' = -1 * ''2\quad 1''\]
\[''1 + 2 +'' = -1 * ''2 + 1 +''\]
\[''1 + 2'' = -1 * ''2\quad 1 +''\]

2. 相同数字

\[''1\quad 1 + '' = 1 + ''1 + 1''\]
\[''1 + 1 + '' = 0\]
\[''1\quad 1'' = 0\]

PauliOperator 类似,FermionOperator 类也提供了费米子算符之间加、减和乘的基础的运算操作。通过整理功能可以得到一份有序排列的结果。

实例

from pyqpanda import *

if __name__=="__main__":

    a = FermionOperator("0 1+", 2)
    b = FermionOperator("2+ 3", 3)

    plus = a + b
    minus = a - b
    muliply = a * b

    print("a + b = ", plus)
    print("a - b = ", minus)
    print("a * b = ", muliply)

    print("normal_ordered(a + b) = ", plus.normal_ordered())
    print("normal_ordered(a - b) = ", minus.normal_ordered())
    print("normal_ordered(a * b) = ", muliply.normal_ordered())
a + b =  {
0 1+ : 2.000000
2+ 3 : 3.000000
}

a - b =  {
0 1+ : 2.000000
2+ 3  : -3.000000
}

a * b =  {
0 1+ 2+ 3 : 6.000000
}

normal_ordered(a + b) =  {
1+ 0 : -2.000000
2+ 3 : 3.000000
}

normal_ordered(a - b) =  {
1+ 0 : -2.000000
2+ 3  : -3.000000
}

normal_ordered(a * b) =  {
2+ 1+ 3 0 : 6.000000
}