cplx_newton_basins — MATH complex op

• Data kinds: signal → labels2d

• Call: import fullseye as fs; fs.ledger.cplx_newton_basins(coeffs, centre=0j, half_width=2.0, shape=(256, 256), max_iter=64, tol=1e-10) (implementation को सीधे call करना हो तो import mathops; mathops.cplx_newton_basins(coeffs, centre=0j, half_width=2.0, shape=(256, 256), max_iter=64, tol=1e-10), registry से लेना हो तो opsmath.get("cplx_newton_basins"))

उपयोग

हर point से शुरू करने पर Newton's method polynomial के किस root में जाता है?

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

Labels the window 1..len(roots) by the root reached, and 0 where the iteration has not converged within max_iter (the Julia set and its neighbourhood). Roots come from numpy.roots — the same routine behind this family's poly_roots — and are sorted by (Re, Im) so the label of a given root does not change between runs.

★Degree 2 has a closed-form answer, so the operator can be checked exactly rather than plausibly. Cayley (1879): for z**2 - 1 the basins are the two open half-planes Re z > 0 and Re z < 0, and the boundary is the imaginary axis — no fractal. The famous fractal boundary appears at degree 3, which Cayley could not settle; there the honest checks are structural (every root's basin is non-empty; z**3 - 1 is invariant under rotation by 2*pi/3, and so is its labelling, up to the cyclic relabelling of the roots).

coeffs is highest-degree-first, as numpy.roots and poly_roots take it.

Raises ValueError: text, non-finite or all-zero coefficients; a non-zero constant (no roots); max_iter < 1; tol <= 0; degenerate window. Points where the derivative vanishes are left unconverged (label 0) rather than divided by — a critical point is genuinely undecided.

HALCON: no operator.

पूरी family का input contract (fail-closed)

mathops के सभी ops गणना से पहले input की जाँच करते हैं (कुछ भी चुपचाप पास नहीं होता):

• complex input से ValueError — float64 में ज़बरदस्ती बदलने पर imaginary part चुपचाप छूट जाता है (numpy केवल ComplexWarning देता है और "सही दिखने वाला पर गलत" real number लौटाता है)। .real/.imag/abs() स्पष्ट रूप से लिखें, या complex data संभालने वाले complexops का उपयोग करें।

• masked array (masked elements वाला) से ValueError — mask हटाकर नीचे के raw values इस्तेमाल करने वाला implicit conversion अस्वीकार है। भरना है या हटाना है, यह स्पष्ट रूप से बताएँ।

• हर input पर NaN/Inf से ValueError (गिनती बताकर अस्वीकार — क्योंकि यह पूरे परिणाम में फैल जाता है)।

• Shape सख़्त है: 1-D और 2-D को implicit रूप से promote या broadcast नहीं किया जाता (vector slot में matrix या matrix slot में vector देने पर ValueError; reshape स्पष्ट रूप से करें)।

• Size की सीमा: matrix लेने वाले ops और stat_histogram के bins, mathops.MAX_ELEMENTS (2^26 ≈ 6.7 करोड़ elements) से अधिक होने पर ValueError देते हैं।

उपयोग की विस्तृत guide

• math_metrology family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_complex_plane_fields — py -3.11 examples/poc_complex_plane_fields.py

वे अगले ops जिनसे type जुड़ता है (labels2d को input के रूप में लेते हैं)

—

इसी category के (complex)

cplx_contour_circle · cplx_poly_eval · cplx_contour_integral · cplx_winding_number · cplx_cauchy_value · cplx_argument_principle · cplx_laurent_coeffs · cplx_joukowski


*Provenance: mathops.py — MATH operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.