mat_lstsq — MATH linalg op

• Data kinds: matrix × signal → table

• Call: import fullseye as fs; fs.ledger.mat_lstsq(a, b, rcond=None) (implementation को सीधे call करना हो तो import mathops; mathops.mat_lstsq(a, b, rcond=None), registry से लेना हो तो opsmath.get("mat_lstsq"))

उपयोग

over-determined system A x ≈ b का least-squares हल (LAPACK gelsd, SVD पर आधारित)।

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

*a* is (m, n) with m >= n (at least as many equations as unknowns; an under-determined system is refused — its minimum-norm answer is a different question, ask mat_pinv). *b* is (m,) or (m, k). *rcond* is the singular-value cutoff relative to the largest (None = numpy's machine-precision default); singular values below it are treated as zero, which is what keeps a noisy rank-deficient fit stable.

Returns a dict — the fit and its honesty telemetry together:

x solution (n,) or (n, k) · residual_ss sum of squared residuals ||b - A x||² (float, or (k,) per column — computed explicitly, so it is present even when the matrix is rank-deficient) · rank effective rank at *rcond* · singular_values of *A* (descending). rank < n means the data does not determine every parameter — report that, don't hide it.

HALCON: solve_matrix on a non-square system (same normal-equation machinery behind vector_to_hom_mat2d and friends).

पूरी 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

पृष्ठभूमि guides (इस op के पीछे की physics और conventions)

• blas_threads_and_memory — Matrix decompositions धीमे क्यों हैं — BLAS threads, caches, memory layout

संदर्भ (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

• poc_colocalization_crosstalk — py -3.11 examples/poc_colocalization_crosstalk.py

• poc_sea_ice_concentration — py -3.11 examples/poc_sea_ice_concentration.py

• poc_solar_limb_darkening — py -3.11 examples/poc_solar_limb_darkening.py

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

dynsys_poincare_section · dwt_inverse · chebyshev_eval_nd

इसी category के (linalg)

mat_solve · mat_svd · mat_eigh · mat_pinv · mat_cond · mat_lu · mat_qr · mat_cholesky


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