poly_roots — MATH interp_poly op

• Data kinds: signal → roots

• Call: import fullseye as fs; fs.ledger.poly_roots(coeffs, real_only=False, imag_tol=1e-09) (implementation को सीधे call करना हो तो import mathops; mathops.poly_roots(coeffs, real_only=False, imag_tol=1e-09), registry से लेना हो तो opsmath.get("poly_roots"))

उपयोग

polynomial (coefficients उच्चतम power पहले) के सभी roots — complex सहित।

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

Roots are the eigenvalues of the companion matrix (np.roots); the polynomial must have degree ≥ 1 and a non-zero leading coefficient (fail-closed: a zero leading coefficient means the stated degree is a lie — trim it explicitly rather than have it silently dropped).

Returns complex128, sorted by real part then imaginary part (deterministic). Complex answers are honest answers: x² + 1 really does have roots ±i, and hiding them would misreport the polynomial. Pass real_only=True to keep only roots whose imaginary part is negligible (|imag| <= imag_tol * max(1, |root|)) and get them back as a sorted float64 array — possibly empty, which is the correct answer for x² + 1.

Numerical note: root-finding conditioning degrades with degree and with clustered roots (a double root moves ~sqrt(eps) under coefficient noise — Wilkinson's classic analysis); treat high-degree roots as approximate. HALCON: no root-finding tuple 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 करते हैं)

• math_metrology — py -3.11 examples/math_metrology.py

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

cplx_rational_field

इसी category के (interp_poly)

interp_linear · interp_cubic · interp_scattered · poly_fit · poly_eval


*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.