paddle_quantum.qpp.laurent

劳伦类的定义和它的函数

class Laurent

基类: object

为劳伦多项式定义的类,定义为 P:C[X,X1]C:xj=LLpjXj

参数:

coef (np.ndarray) – 劳伦多项式系数的列表,排列为 {pL,...,p1,p0,p1,...,pL}

property coef

以上升顺序给出多项式的系数序列

property conj

给出多项式的共轭

property roots

给出多项式根的列表

property norm

给出多项式系数的绝对值平方之和

property max_norm

给出多项式的系数的绝对值的最大值

property parity

给出多项式的宇称

is_parity(p)

检验劳伦多项式是否有确定宇称

参数:

p (int) – 宇称

返回:

包含以下元素:

-宇称是否是 p mod 2 -如果不是,返回破坏该宇称的绝对值最大的系数 -如果不是,返回破坏该宇称的绝对值最小的系数

返回类型:

Tuple[bool, complex]

revise_tol(t)

回顾 TOL 的值

参数:

t (float) – TOL的值

ascending_coef(coef)

通过 coefPQ 中计算角度

参数:

coef (np.ndarray) – 排列成 {p0,...,pL,pL,...,p1} 的系数列表

返回:

排列成 {pL,...,p1,p0,p1,...,pL} 的系数列表

返回类型:

np.ndarray

remove_abs_error(data, tol)

移除数据中的错误

参数:
  • data (np.ndarray) – 数据数组

  • tol (Optional[float] = None) – 容错率

返回:

除错后的数据

返回类型:

np.ndarray

random_laurent_poly(deg, parity, is_real)

随机生成一个劳伦多项式

参数:
  • deg (int) – 该多项式的度数

  • parity (Optional[int] = None) – 该多项式的宇称,默认为 none

  • is_real (Optional[bool] = False) – 该多项式系数是否是实数,默认为 false

返回:

一个模小于等于1的劳伦多项式

返回类型:

Laurent

sqrt_generation(A)

生成劳伦多项式 A 的平方根

参数:

A (Laurent) – 一个劳伦多项式

返回:

一个模小于等于1的劳伦多项式

返回类型:

Laurent

Q_generation(P)

生成劳伦多项式 P 的互补多项式

参数:

P (Laurent) – 一个宇称为 deg ,度数为 L 的劳伦多项式

返回:

一个宇称为 deg ,度数为 L 的劳伦多项式 Q ,使得 PP+QQ=1

返回类型:

Laurent

pair_generation(f)

生成劳伦多项式 f 的劳伦对

参数:

f (Laurent) – 一个实的,偶次的,max_norm小于1的劳伦多项式

返回:

劳伦多项式 P,Q 使得 P=1+f/2,Q=1f/2

返回类型:

Laurent

laurent_generator(fn, dx, deg, L)

生成劳伦多项式 f 的劳伦对

参数:
  • fn (Callable[[np.ndarray], np.ndarray]) – 要近似的函数

  • dx (float) – 数据点的采样频率

  • deg (int) – 劳伦多项式的度数

  • L (float) – 近似宽度的一半

返回:

一个度数为 deg 的,在区间 [L,L] 内近似`fn` 的劳伦多项式

返回类型:

Laurent

deg_finder(fn, delta, l)

找到一个度数,使得由 laurent_generator 生成的劳伦多项式具有小于1的max_norm

参数:
  • fn (Callable[[np.ndarray], np.ndarray]) – 要近似的函数

  • delta (Optional[float] = 0.00001 * np.pi) – 数据点的采样频率,默认值为 0.00001π

  • l (Optional[float] = np.pi) – 近似宽度的一半,默认值为 π

返回:

该近似的度数

返回类型:

int

step_laurent(deg)

生成一个近似阶梯函数的劳伦多项式

参数:

deg (int) – 输出劳伦多项式的度数(为偶数)

返回:

一个估计 f(x)=0.5 if x<=0 else 0 的劳伦多项式

返回类型:

Laurent

备注

在哈密顿量能量计算器中使用

hamiltonian_laurent(t, deg)

生成一个近似哈密顿量演化函数的劳伦多项式

参数:
  • t (float) – 演化常数(时间)

  • deg (int) – 输出劳伦多项式的度数(为偶数)

返回:

一个估计 eitcos(x) 的劳伦多项式

返回类型:

Laurent

备注

-起源于Jacobi-Anger展开: y(x)=ninBessel(n,x)einx -在哈密顿量模拟中使用

ln_laurent(deg, t)

生成一个近似ln函数的劳伦多项式

参数:
  • deg (int) – 劳伦多项式的度数(是4的因子)

  • t (float) – 归一化常数

返回:

一个估计 ln(cos(x)2)/t 的劳伦多项式

返回类型:

Laurent

备注

在冯诺依曼熵的估计中使用。

comb(n, k)

计算nCr(n, k)

参数:
  • n (float) – 输入参数

  • k (int) – 输入参数

返回:

nCr(n, k)

返回类型:

float

power_laurent(deg, alpha, t)

生成近似幂函数的劳伦多项式

参数:
  • deg (int) – 劳伦多项式的度数(是4的因子)

  • alpha (int) – 幂函数的幂次

  • t (float) – 归一化常数

返回:

一个估计 (cos(x)2)α/2/t 的劳伦多项式

返回类型:

Laurent