费米子算符类
我们用如下的记号标识来表示费米子的两个形态, 湮没: \(X\) 表示 \(a_x\) , 创建: \(X +\) 表示 \(a_x^\dagger\) , 例如: "1 + 3 5 + 1"则代表 \(a_1^\dagger \ a_3 \ a_5^\dagger \ a_1\)
整理规则如下
1. 不同数字
2. 相同数字
跟 PauliOperator
类似,FermionOperator
类也提供了费米子算符之间加、减和乘的基础的运算操作。通过整理功能可以得到一份有序排列的结果。
- class FermionOperator
费米子算符类,用于生成和操作费米子算符集合,主要用于量子化学等领域的模拟和计算。
- __init__()
初始化 FermionOperator 类的实例。
- __init__(scalar: float)
初始化 FermionOperator 类的实例。
- 参数:
scalar (float) -- 标量值。
- __init__(scalar: complex)
初始化 FermionOperator 类的实例。
- 参数:
scalar (complex) -- 复数标量值。
- __init__(term: str, scalar: complex)
初始化 FermionOperator 类的实例。
- 参数:
term (str) -- 项的标识字符串,表示费米子项。
scalar (complex) -- 复数标量值。
- __init__(terms: Dict[str, complex])
初始化 FermionOperator 类的实例。
- 参数:
terms (Dict[str, complex]) -- 复数标量值和项的字典,键为项的标识字符串。
- data() List[Tuple[Tuple[List[Tuple[int, bool]], str], complex]]
获取费米子算符数据。
- 返回:
包含费米子项的列表,每个元组为一项,包含项的信息和复数标量值。
- 返回类型:
List[Tuple[Tuple[List[Tuple[int, bool]], str], complex]]
- error_threshold() float
获取误差阈值。
- 返回:
误差阈值。
- 返回类型:
float
- isEmpty() bool
判断费米子算符是否为空。
- 返回:
如果费米子算符为空,则为 True,否则为 False。
- 返回类型:
bool
- normal_ordered() FermionOperator
对费米子算符进行正则排序。
- 返回:
经过正则排序后的费米子算符。
- 返回类型:
- setErrorThreshold(threshold: float) None
设置误差阈值。
- 参数:
threshold (float) -- 误差阈值。
- toString() str
获取费米子算符的字符串表示。
- 返回:
费米子算符的字符串表示。
- 返回类型:
str
- to_string() str
获取费米子算符的字符串表示。
- 返回:
费米子算符的字符串表示。
- 返回类型:
str
实例
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
}