complex op• 数据种类:cpoints × cpoints → table
• 调用: import fullseye as fs; fs.ledger.cplx_laurent_coeffs(z, fz, kmin=-1, kmax=4, method='exact')(要直接调用实现,import mathops; mathops.cplx_laurent_coeffs(z, fz, kmin=-1, kmax=4, method='exact');从台账取用则 opsmath.get("cplx_laurent_coeffs"))
均匀采样圆周上的 Laurent(以及 Taylor)系数 —— 含留数。
> 以下的详细说明为原文 —— 摘要与标题已翻译。
For f holomorphic on an annulus around c, f(z) = sum_k c_k (z - c)^k with c_k = 1/(2*pi*i) ∮ f(zeta)/(zeta - c)^(k+1) dzeta. On a circle of radius r sampled at n equally spaced angles this becomes a discrete Fourier sum, c_k = (1/(n r^k)) sum_j f_j exp(-i k theta_j) — the trapezoidal rule in the angle, where it converges geometrically rather than as O(n^-2) (Trefethen & Weideman 2014, "The exponentially convergent trapezoidal rule").
c_-1 is the residue at c (when c is the only singularity inside), c_k for k >= 0 are the Taylor coefficients f^(k)(c)/k!, and a non-zero c_-m for m > 1 reveals a pole of order m. Measured on the unit circle with f = 1/(z - 0.5), n = 64: c_-1 = 1 and c_-2 = 0.5 to 1e-16 (machine precision).
method="exact" (default) preserves the direct Fourier sum. method="fast" uses an FFT only when angular gaps agree within 64 * float64 epsilon; otherwise it routes to the exact sum. On 4,096 samples and 201 orders the fast path measured over 15 times faster, while differing from the direct sum by less than 1e-12.
Returns a dict: k (int64 orders, kmin..kmax) · c (complex128 coefficients) · center · radius. The centre is the sample mean, which is exact for a uniformly sampled circle.
Orientation, and how it differs from the rest of the family: the sum runs over the sample *set*, not the sample *order*, so this op always returns the coefficients of the positively oriented circle — the standard definition — whatever order the points arrive in. Feed a clockwise circle and c_-1 still comes back + the residue, while cplx_contour_integral / (2*pi*i) on the same points returns - it (verified). Both are right; they answer different questions (the intrinsic coefficient vs the integral along *this* traversal). Do not cross-check one against the other without fixing the orientation first.
Honest limitation — aliasing: the discrete sum cannot distinguish c_k from c_{k+n}, so a coefficient carries the alias sum sum_m c_{k+m n} r^{m n}. That is negligible for a rapidly converging series (the 0.5^64 term above) and ruinous near the annulus boundary. Requesting more than n coefficients is refused for the same reason.
Raises ValueError: the samples are not a uniformly spaced circle (unequal radii or unequal angular gaps beyond 1e-8 relative — this op is *not* valid on an arbitrary contour, and silently pretending otherwise would return numbers that mean nothing), kmin > kmax, more than n coefficients requested, non-integer orders, and a coefficient that overflowed (r^-k for a small radius and a large negative order).
HALCON: no operator.
mathops 的每个算子都先校验输入再计算(不让任何东西无声通过):
• complex 输入一律 ValueError —— 强制转成 float64 会无声丢掉虚部(numpy 只发一个 ComplexWarning,然后返回一个「看着合理却是错的」实数)。请显式写出 .real/.imag/abs(),或改用支持复数的 complexops。
• 含被掩元素的 masked array 一律 ValueError —— 拒绝「剥掉掩码直接使用下面原值」的隐式转换。请显式选择填充还是丢弃。
• 所有输入中的 NaN/Inf 一律 ValueError(明确给出个数后拒绝 —— 它会污染整个结果)。
• 形状严格:不对 1-D 与 2-D 做隐式提升或广播(向量槽位收到矩阵、矩阵槽位收到向量都是 ValueError;请显式 reshape)。
• 尺寸上限:接受矩阵的算子与 stat_histogram 的 bins,超过 mathops.MAX_ELEMENTS(2^26 ≈ 6700 万个元素)即 ValueError。
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。
• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。
• 算法的正典(作者、年份)与用途见上面的族使用指南。
• math_complex — py -3.11 examples/math_complex.py
table 作为输入)dynsys_poincare_section · dwt_inverse · chebyshev_eval_nd
complex)cplx_contour_circle · cplx_poly_eval · cplx_contour_integral · cplx_winding_number · cplx_cauchy_value · cplx_argument_principle · cplx_joukowski · cplx_mobius
*Provenance: mathops.py — MATH 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.