paddle_quantum.qpp.laurent

劳伦类的定义和它的函数

class Laurent

基类: object

为劳伦多项式定义的类,定义为 \(P:\mathbb{C}[X, X^{-1}] \to \mathbb{C} :x \mapsto \sum_{j = -L}^{L} p_j X^j\)

参数:

coef (np.ndarray) – 劳伦多项式系数的列表,排列为 \(\{p_{-L}, ..., p_{-1}, p_0, p_1, ..., p_L\}\)

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) – 排列成 \(\{ p_0, ..., p_L, p_{-L}, ..., p_{-1} \}\) 的系数列表

返回:

排列成 \(\{ p_{-L}, ..., p_{-1}, p_0, p_1, ..., p_L \}\) 的系数列表

返回类型:

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 = \sqrt{1 + f / 2}, Q = \sqrt{1 - f / 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 \pi\)

  • l (Optional[float] = np.pi) – 近似宽度的一半,默认值为 \(\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) – 输出劳伦多项式的度数(为偶数)

返回:

一个估计 \(e^{it \cos(x)}\) 的劳伦多项式

返回类型:

Laurent

备注

-起源于Jacobi-Anger展开: \(y(x) = \sum_n i^n Bessel(n, x) e^{inx}\) -在哈密顿量模拟中使用

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)^{\alpha / 2} / t\) 的劳伦多项式

返回类型:

Laurent