<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN" "http://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article" dtd-version="1.2" xml:lang="en">
    <front>
        <journal-meta>
            <journal-id journal-id-type="pmc">F1000Research</journal-id>
            <journal-title-group>
                <journal-title>F1000Research</journal-title>
            </journal-title-group>
            <issn pub-type="epub">2046-1402</issn>
            <publisher>
                <publisher-name>F1000 Research Limited</publisher-name>
                <publisher-loc>London, UK</publisher-loc>
            </publisher>
        </journal-meta>
        <article-meta>
            <article-id pub-id-type="doi">10.12688/f1000research.173697.1</article-id>
            <article-categories>
                <subj-group subj-group-type="heading">
                    <subject>Research Article</subject>
                </subj-group>
                <subj-group>
                    <subject>Articles</subject>
                </subj-group>
            </article-categories>
            <title-group>
                <article-title>Consensus-Based Approximation and Quadrature on the Sphere via Weighted Least Squares Polynomial Models</article-title>
                <fn-group content-type="pub-status">
                    <fn>
                        <p>[version 1; peer review: awaiting peer review]</p>
                    </fn>
                </fn-group>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author" corresp="yes">
                    <name>
                        <surname>K. Abdalrahem</surname>
                        <given-names>Mushtaq</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Methodology</role>
                    <role content-type="http://credit.niso.org/">Project Administration</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Original Draft Preparation</role>
                    <uri content-type="orcid">https://orcid.org/0000-0002-9719-2197</uri>
                    <xref ref-type="corresp" rid="c1">a</xref>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Abdul Raheem</surname>
                        <given-names>Ali  K.</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Data Curation</role>
                    <role content-type="http://credit.niso.org/">Software</role>
                    <xref ref-type="aff" rid="a2">2</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Taha Alzubaidi</surname>
                        <given-names>Yasser</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Funding Acquisition</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <xref ref-type="aff" rid="a3">3</xref>
                </contrib>
                <aff id="a1">
                    <label>1</label>University of Al-Ameed, Karbala City, Karbala, 56001, Iraq</aff>
                <aff id="a2">
                    <label>2</label>University of Warith Al Anbiyaa, Karbala, Karbala Governorate, Iraq</aff>
                <aff id="a3">
                    <label>3</label>Alsafwa Universty, Karbala City, Karbala, 56001, Iraq</aff>
            </contrib-group>
            <author-notes>
                <corresp id="c1">
                    <label>a</label>
                    <email xlink:href="mailto:mushtaq.k@alameed.edu.iq">mushtaq.k@alameed.edu.iq</email>
                </corresp>
                <fn fn-type="conflict">
                    <p>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>31</day>
                <month>12</month>
                <year>2025</year>
            </pub-date>
            <pub-date pub-type="collection">
                <year>2025</year>
            </pub-date>
            <volume>14</volume>
            <elocation-id>1485</elocation-id>
            <history>
                <date date-type="accepted">
                    <day>23</day>
                    <month>12</month>
                    <year>2025</year>
                </date>
            </history>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2025 K. Abdalrahem M et al.</copyright-statement>
                <copyright-year>2025</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access article distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <self-uri content-type="pdf" xlink:href="https://f1000research.com/articles/14-1485/pdf"/>
            <abstract>
                <p>The fundamental tasks of function approximation and numerical integration on the sphere from scattered data nodes present significant challenges, including the curse of dimensionality, the instability of high-degree polynomial methods, and the limitations of existing approaches that often require specially structured node sets. This paper introduces a novel framework that seamlessly integrates Weighted Least Squares (WLS) polynomial approximation, using spherical harmonics and Voronoi-based weights, with a consensus-based optimization strategy for decentralized computation, specifically designed for large, distributed datasets. Our results show that this method provides stable and accurate approximation even with high-degree polynomials on arbitrary, unstructured node sets, ensuring a well-conditioned system. It also leads to the construction of a novel quadrature rule with provably positive weights, guaranteeing stability for numerical integration. We derive rigorous theoretical error bounds that explicitly connect the accuracy of the method to the density of the node set and the polynomial degree. Extensive numerical experiments confirm that our framework outperforms standard least squares and classical scattered-data quadrature rules in both stability and accuracy. We conclude that this consensus-based WLS framework offers a robust, scalable, and distributed solution for a wide range of spherical problems, with significant potential impact in scientific computing and data analysis.</p>
            </abstract>
            <kwd-group kwd-group-type="author">
                <kwd>Spherical Approximation</kwd>
                <kwd>Numerical Integration on the Sphere</kwd>
                <kwd>Weighted Least Squares</kwd>
                <kwd>Distributed Optimization</kwd>
                <kwd>Positive Quadrature.</kwd>
            </kwd-group>
            <funding-group>
                <funding-statement>The author(s) declared that no grants were involved in supporting this work.</funding-statement>
            </funding-group>
        </article-meta>
    </front>
    <body>
        <sec id="sec1" sec-type="intro">
            <title>1. Introduction</title>
            <p>The unit sphere is a fundamental domain for a vast array of scientific and engineering applications, making the development of efficient numerical algorithms for it a problem of enduring significance. In geophysics, spherical harmonic models are indispensable for representing the Earth&#x2019;s gravitational and magnetic fields, crucial for satellite missions like GRACE and Swarm (
                <xref ref-type="bibr" rid="ref5">Arora, 2023</xref>). Similarly, in astrophysics, the analysis of the Cosmic Microwave Background radiation relies heavily on precise spherical harmonic decompositions to test cosmological models (
                <xref ref-type="bibr" rid="ref25">Planck Collaboration, 2020</xref>). Beyond the physical sciences, the computer graphics community leverages spherical functions for high-dynamic-range image lighting and rendering (
                <xref ref-type="bibr" rid="ref14">Gopalakrishnan et al., 2025</xref>), while emerging fields in machine learning (
                <xref ref-type="bibr" rid="ref16">Harith et al., 2024</xref>) are increasingly adopting spherical convolutional neural networks to process omnidirectional data (
                <xref ref-type="bibr" rid="ref2">Abdeljawad Dittrich, 2023</xref>; 
                <xref ref-type="bibr" rid="ref18">Lakshmi et al., 2025</xref>).</p>
            <p>The central problem this work addresses can be formally stated as follows: given a set of 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:mi>N</mml:mi>
                    </mml:math>
</inline-formula> scattered nodes 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:msub>
                            <mml:mi>X</mml:mi>
                            <mml:mi>N</mml:mi>
                        </mml:msub>
                        <mml:mo>=</mml:mo>
                        <mml:msubsup>
                            <mml:mrow>
                                <mml:mo stretchy="true">{</mml:mo>
                                <mml:msub>
                                    <mml:mi mathvariant="bold">x</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="true">}</mml:mo>
                            </mml:mrow>
                            <mml:mrow>
                                <mml:mi>i</mml:mi>
                                <mml:mo>=</mml:mo>
                                <mml:mn>1</mml:mn>
                            </mml:mrow>
                            <mml:mi>N</mml:mi>
                        </mml:msubsup>
                    </mml:math>
</inline-formula> on the sphere 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:msup>
                            <mml:mi mathvariant="double-struck">S</mml:mi>
                            <mml:mn>2</mml:mn>
                        </mml:msup>
                    </mml:math>
</inline-formula> and corresponding function values 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:msub>
                            <mml:mi>f</mml:mi>
                            <mml:mi>i</mml:mi>
                        </mml:msub>
                        <mml:mo>=</mml:mo>
                        <mml:mi>f</mml:mi>
                        <mml:mrow>
                            <mml:mo stretchy="true">(</mml:mo>
                            <mml:msub>
                                <mml:mi mathvariant="bold">x</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo stretchy="true">)</mml:mo>
                        </mml:mrow>
                    </mml:math>
</inline-formula>, our goal is to find a spherical polynomial approximation 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:msub>
                            <mml:mi>P</mml:mi>
                            <mml:mi>L</mml:mi>
                        </mml:msub>
                        <mml:mi>f</mml:mi>
                    </mml:math>
</inline-formula> of degree 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:mi>L</mml:mi>
                    </mml:math>
</inline-formula> that accurately approximates the underlying function 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:mi>f</mml:mi>
                    </mml:math>
</inline-formula> and, consequently, enables the stable and accurate computation of the integral 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:mi>I</mml:mi>
                        <mml:mrow>
                            <mml:mo stretchy="true">(</mml:mo>
                            <mml:mi>f</mml:mi>
                            <mml:mo stretchy="true">)</mml:mo>
                        </mml:mrow>
                        <mml:mo>=</mml:mo>
                        <mml:msub>
                            <mml:mo>&#x222b;</mml:mo>
                            <mml:msup>
                                <mml:mi mathvariant="double-struck">S</mml:mi>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:msub>
                        <mml:mi>f</mml:mi>
                        <mml:mrow>
                            <mml:mo stretchy="true">(</mml:mo>
                            <mml:mi mathvariant="bold">x</mml:mi>
                            <mml:mo stretchy="true">)</mml:mo>
                        </mml:mrow>
                        <mml:mi mathvariant="italic">d&#x03c9;</mml:mi>
                        <mml:mrow>
                            <mml:mo stretchy="true">(</mml:mo>
                            <mml:mi mathvariant="bold">x</mml:mi>
                            <mml:mo stretchy="true">)</mml:mo>
                        </mml:mrow>
                    </mml:math>
</inline-formula>. The natural basis for this endeavor is the set of spherical harmonics, which form a complete, orthogonal system for square-integrable functions on the sphere, as opposed to ill-conditioned monomial or polar coordinate representations. While spherical harmonics provide an excellent theoretical foundation, the numerical implementation for scattered data is fraught with challenges. Interpolatory conditions at arbitrary nodes often lead to ill-conditioned systems and instability, particularly for high polynomial degrees. A common alternative is the discrete least squares (LS) approach, which offers greater flexibility. However, as demonstrated by 
                <xref ref-type="bibr" rid="ref8">Brito and Shah (2023)</xref>, the conditioning of the normal equations for LS on the sphere deteriorates rapidly with increasing 
                <italic toggle="yes">L</italic> unless the node set is specially designed, such as a spherical design or a Marcinkiewicz&#x2013;Zygmund system (
                <xref ref-type="bibr" rid="ref23">Mhaskar et al., 2001</xref>). For truly arbitrary, large-scale scattered data, which is commonplace in modern applications like sensor networks, the standard LS method becomes prohibitively unstable, and the construction of high-quality quadrature rules with positive weights remains an open challenge, as noted by 
                <xref ref-type="bibr" rid="ref9">Chen and Eldan (2022)</xref> and 
                <xref ref-type="bibr" rid="ref4">Ahmed et al. (2022)</xref>.</p>
            <p>In response to these limitations, this paper introduces a novel computational framework that synergizes a carefully Weighted Least Squares (WLS) formulation with a consensus-based optimization strategy. Our primary contribution is a unified methodology for stable approximation and quadrature that is inherently suited to large, distributed datasets (
                <xref ref-type="bibr" rid="ref1">Abdalrahem, 2025</xref>).</p>
            <p>First, we develop a stable WLS formulation where the weights are strategically chosen based on the local geometric properties of the node set, specifically by associating them with the areas of Voronoi cells on the sphere. This choice, inspired by principles in meshless integration (
                <xref ref-type="bibr" rid="ref7">Berman, 2024</xref>), ensures that the discretization more faithfully represents the continuous 
                <italic toggle="yes">L
                    <sup>2</sup>
                </italic> inner product, thereby significantly improving the conditioning of the problem compared to standard LS.</p>
            <p>Second, to tackle the computational bottleneck associated with large 
                <italic toggle="yes">N</italic>, we recast the global WLS problem into a distributed optimization framework. We employ a consensus algorithm, specifically the Alternating Direction Method of Multipliers (ADMM) as detailed by 
                <xref ref-type="bibr" rid="ref20">Lin et al. (2022)</xref>, which allows for the problem to be broken down into smaller, localized sub-problems solved in parallel, whose solutions are then coordinated to reach a global agreement. This makes our method highly scalable.</p>
            <p>Third, and quite remarkably, the solution of this WLS system naturally yields a novel, provably positive-weight quadrature rule as a direct byproduct, addressing a long-standing desire for stable integration schemes on scattered nodes.</p>
            <p>Our fourth contribution is a rigorous theoretical analysis that establishes error bounds for the approximation, building upon the foundational work of 
                <xref ref-type="bibr" rid="ref17">Ivanov et al. (2024)</xref> on hyperinterpolation errors, and provides stability estimates for the quadrature (
                <xref ref-type="bibr" rid="ref21">Lu and Wang, 2021</xref>). Finally, we provide comprehensive numerical validation, comparing our method against contemporary approaches, demonstrating its superior performance in terms of both accuracy and stability across a range of test scenarios.</p>
            <p>The remainder of this paper is organized as follows. 
                <xref ref-type="sec" rid="sec2">
Section 2</xref> provides a review of the relevant literature on spherical approximation, quadrature, and distributed optimization. 
                <xref ref-type="sec" rid="sec3">
Section 3</xref> details our methodology, including the spherical harmonic basis, the weighted least squares formulation, the consensus-based optimization algorithm, and the derivation of the quadrature rule. 
                <xref ref-type="sec" rid="sec10">
Section 4</xref> presents our theoretical findings on stability and error bounds. 
                <xref ref-type="sec" rid="sec13">
Section 5</xref> is devoted to numerical experiments that validate the efficacy of our proposed framework. Finally, 
                <xref ref-type="sec" rid="sec14">
Section 6</xref> contains a discussion of the results and our concluding remarks, along with directions for future research.</p>
        </sec>
        <sec id="sec2">
            <title>2. Literature review</title>
            <p>The analysis of functions on the sphere is grounded in spherical harmonics, 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:msubsup>
                            <mml:mi>Y</mml:mi>
                            <mml:mi>l</mml:mi>
                            <mml:mi>m</mml:mi>
                        </mml:msubsup>
                    </mml:math>
</inline-formula>, which form a complete orthonormal basis for 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:msup>
                            <mml:mi>L</mml:mi>
                            <mml:mn>2</mml:mn>
                        </mml:msup>
                        <mml:mrow>
                            <mml:mo stretchy="true">(</mml:mo>
                            <mml:msup>
                                <mml:mi mathvariant="double-struck">S</mml:mi>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo stretchy="true">)</mml:mo>
                        </mml:mrow>
                    </mml:math>
</inline-formula> and are eigenfunctions of the spherical Laplacian. Their properties, including orthogonality and the Addition Theorem linking them to Legendre polynomials, are well documented (
                <xref ref-type="bibr" rid="ref27">Xin et al., 2021</xref>). 
                <xref ref-type="bibr" rid="ref17">Ivanov et al. (2024)</xref> established precise error bounds for polynomial approximation via hyperinterpolation, showing that convergence depends on the function&#x2019;s Sobolev smoothness. 
                <xref ref-type="bibr" rid="ref19">Lin et al. (2021)</xref> later extended these results to noisy data, demonstrating the stabilizing role of least-squares regularization.</p>
            <p>In discrete computation, the choice of node distribution is critical. Structured grids enable efficient quadrature, as in the 
                <xref ref-type="bibr" rid="ref11">Driscoll and Healy (1994)</xref> algorithm, which achieves exactness for certain polynomial degrees via FFTs, and in Gauss&#x2013;Legendre quadrature, which provides high algebraic precision. Spherical designs (
                <xref ref-type="bibr" rid="ref10">Delsarte et al., 1991</xref>) integrate polynomials exactly up to a prescribed degree with equal weights, and 
                <xref ref-type="bibr" rid="ref13">Ehler (2025)</xref> achieved efficient constructions for high degrees. However, such structured sets are impractical for inherently scattered data, such as those from satellites or sensor networks. For unstructured nodes, several methods exist. Monte Carlo integration offers simplicity but converges slowly at 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:mi>O</mml:mi>
                        <mml:mrow>
                            <mml:mo stretchy="true">(</mml:mo>
                            <mml:mn>1</mml:mn>
                            <mml:mo>/</mml:mo>
                            <mml:msqrt>
                                <mml:mi>N</mml:mi>
                            </mml:msqrt>
                            <mml:mo stretchy="true">)</mml:mo>
                        </mml:mrow>
                    </mml:math>
</inline-formula>, Voronoi-based schemes (
                <xref ref-type="bibr" rid="ref12">Du et al., 1999</xref>) guarantee positive weights but limited accuracy. Radial Basis Function (RBF) methods (
                <xref ref-type="bibr" rid="ref9">Chen and Eldan, 2022</xref>) improve flexibility but are sensitive to the shape parameter. Least-squares quadrature, based on spherical harmonics up to degree 
                <italic toggle="yes">L
                    <sup>2</sup>
                </italic>, ensures flexibility but may suffer instability unless the node set satisfies the Marcinkiewicz&#x2013;Zygmund condition (
                <xref ref-type="bibr" rid="ref8">Brito and Shah, 2023</xref>). Moreover, non-positive weights can cause numerical instability (
                <xref ref-type="bibr" rid="ref24">Mirzaei, 2021</xref>).</p>
            <p>Weighted Least Squares (WLS) methods address these issues by incorporating a diagonal weight matrix to improve conditioning. 
                <xref ref-type="bibr" rid="ref15">Haberstich et al. (2022)</xref> analyzed optimal weighting strategies, showing that stability can be achieved under weaker conditions than the MZ requirement. On the sphere, this corresponds to weights inversely proportional to local node density. Similar ideas were employed by 
                <xref ref-type="bibr" rid="ref7">Berman (2024)</xref> in quasi&#x2013;Monte Carlo (QMC) designs, achieving near-optimal convergence. 
                <xref ref-type="bibr" rid="ref3">Adcock (2024)</xref> further established that well-conditioned WLS solutions naturally yield positive quadrature weights. Large-scale applications demand distributed computation. The Alternating Direction Method of Multipliers (ADMM) (
                <xref ref-type="bibr" rid="ref20">Lin et al., 2022</xref>) has become a standard approach for distributed convex optimization, widely adopted in decentralized learning and regression (
                <xref ref-type="bibr" rid="ref22">Mateos and Rajawat, 2013</xref>). Recent work by 
                <xref ref-type="bibr" rid="ref26">Schneider and Uekermann (2025)</xref> explored distributed RBF partition-of-unity methods, but such efforts have not unified polynomial approximation and integration within a single framework.</p>
            <p>In summary, prior research has advanced spherical approximation, scattered-data quadrature, WLS stability, and distributed optimization independently. However, no unified approach addresses all these aspects simultaneously. Existing methods either require structured nodes, lack positive weights, or fail to scale efficiently. This research bridges these gaps through a geometrically informed WLS formulation combined with a consensus-based optimization strategy, providing a stable and scalable framework for spherical approximation and quadrature on large, distributed, and unstructured datasets.</p>
        </sec>
        <sec id="sec3">
            <title>3. Methodology</title>
            <p>This section describes the complete mathematical and computational framework used to produce stable polynomial approximations and positive-weight quadrature rules from scattered samples on the unit sphere. The pipeline couples weighted least squares (WLS) approximation in a spherical-harmonic basis with a consensus-based distributed solver and finishes by deriving nodal quadrature weights from the WLS projector. The principal design choices are the polynomial space &#x03a0;_L (degree L), geometry-aware sampling weights (Voronoi-area or MZ-inspired weights), and a communication-efficient distributed optimizer (ADMM), (
                <xref ref-type="bibr" rid="ref6">Alhadawi et al., 2025</xref>). 
                <xref ref-type="fig" rid="f1">
Figure 1</xref> (referenced but not drawn here) summarizes the flow: node generation &#x2192; Voronoi weight computation &#x2192; local WLS solves &#x2192; ADMM consensus &#x2192; quadrature weight computation &#x2192; integral evaluation.</p>
            <fig fig-type="figure" id="f1" orientation="portrait" position="float">
                <label>
Figure 1. </label>
                <caption>
                    <title>Schematic of the proposed consensus-based Weighted Least Squares (WLS) methodology.</title>
                    <p>The diagram illustrates the iterative and distributed nature of the consensus-based WLS approach. The process begins with initial data distributed across multiple interconnected nodes. In each iteration, nodes locally compute a Weighted Least Squares approximation. They then exchange (achieve consensus on) a subset of their local parameters (e.g., weights or basis coefficients) with their neighbors. This consensus step ensures global convergence of the local WLS solutions to a single, optimal global solution while maintaining computational efficiency.</p>
                </caption>
                <graphic id="gr1" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/191535/1e09f029-6103-403f-a6b9-e4cec9532d39_figure1.gif"/>
            </fig>
            <p>Below in 
                <xref ref-type="fig" rid="f1">
Figure 1</xref> we provide a compact schematic diagram that summarizes the flow from raw node sets and samples to distributed WLS estimation and to quadrature weight computation. The diagram is intended to appear as a schematic in the methods section of a paper and to guide the reader through the main algorithmic steps.</p>
            <p>The diagram emphasizes that the computationally dominant linear algebra is confined to small 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:mi>D</mml:mi>
                        <mml:mo>&#x00d7;</mml:mo>
                        <mml:mi>D</mml:mi>
                    </mml:math>
</inline-formula> systems solved locally, while global communication is limited to 
                <inline-formula>

                    <mml:math display="inline">
                        <mml:mi>D</mml:mi>
                    </mml:math>
</inline-formula>-dimensional vectors at each ADMM iteration. The quadrature construction is performed once the coefficient consensus has converged.</p>
            <sec id="sec4">
                <title>3.1 Mathematical preliminaries and problem statement</title>
                <p>We consider the unit sphere embedded in three-dimensional space, defined as 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi mathvariant="double-struck">S</mml:mi>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo>=</mml:mo>
                            <mml:mrow>
                                <mml:mo stretchy="true">{</mml:mo>
                                <mml:mi mathvariant="bold">x</mml:mi>
                                <mml:mspace width="0.25em"/>
                                <mml:mo>&#x2208;</mml:mo>
                                <mml:mspace width="0.25em"/>
                                <mml:msup>
                                    <mml:mi>&#x211d;</mml:mi>
                                    <mml:mn>3</mml:mn>
                                </mml:msup>
                                <mml:mo>:</mml:mo>
                                <mml:mo>&#x2225;</mml:mo>
                                <mml:mi mathvariant="bold">x</mml:mi>
                                <mml:msub>
                                    <mml:mo>&#x2225;</mml:mo>
                                    <mml:mn>2</mml:mn>
                                </mml:msub>
                                <mml:mo>=</mml:mo>
                                <mml:mn>1</mml:mn>
                                <mml:mo stretchy="true">}</mml:mo>
                            </mml:mrow>
                        </mml:math>
</inline-formula>, equipped with the standard surface area measure 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi mathvariant="italic">d&#x03c9;</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mi mathvariant="bold">x</mml:mi>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
</inline-formula>. For any integer 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>L</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2265;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:mn>0</mml:mn>
                        </mml:math>
</inline-formula>, we denote by 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi mathvariant="normal">&#x03a0;</mml:mi>
                                <mml:mi>L</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> the space of spherical polynomials of degree at most 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>L</mml:mi>
                        </mml:math>
</inline-formula>, which consists of the restrictions to 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi mathvariant="double-struck">S</mml:mi>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:math>
</inline-formula> of polynomials in 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi>&#x211d;</mml:mi>
                                <mml:mn>3</mml:mn>
                            </mml:msup>
                        </mml:math>
</inline-formula> with total degree 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mo>&#x2264;</mml:mo>
                            <mml:mi>L</mml:mi>
                        </mml:math>
</inline-formula>. A fundamental orthonormal basis for this space is provided by the spherical harmonics 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msubsup>
                                <mml:mi>Y</mml:mi>
                                <mml:mi>&#x2113;</mml:mi>
                                <mml:mi>m</mml:mi>
                            </mml:msubsup>
                        </mml:math>
</inline-formula>, where the indices range over 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>&#x2113;</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mn>0</mml:mn>
                            <mml:mo>,</mml:mo>
                            <mml:mn>1</mml:mn>
                            <mml:mo>,</mml:mo>
                            <mml:mo>&#x2026;</mml:mo>
                            <mml:mo>,</mml:mo>
                            <mml:mi>L</mml:mi>
                        </mml:math>
</inline-formula> and 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>m</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:mi>&#x2113;</mml:mi>
                            <mml:mo>,</mml:mo>
                            <mml:mo>&#x2026;</mml:mo>
                            <mml:mo>,</mml:mo>
                            <mml:mi>&#x2113;</mml:mi>
                        </mml:math>
</inline-formula>. The total dimension of this polynomial space is given by:
                    <disp-formula id="e1">

                        <mml:math display="block">
                            <mml:mi>D</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>L</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:math>
</disp-formula>
                </p>
                <p>To simplify notation in subsequent developments, we employ a single-index enumeration of the basic functions, denoted by 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msubsup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:msub>
                                        <mml:mi>Y</mml:mi>
                                        <mml:mi>k</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                                <mml:mrow>
                                    <mml:mi>k</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                </mml:mrow>
                                <mml:mi>D</mml:mi>
                            </mml:msubsup>
                        </mml:math>
</inline-formula>.</p>
                <p>Let 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>X</mml:mi>
                                <mml:mi>N</mml:mi>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:msubsup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:msub>
                                        <mml:mi mathvariant="bold">x</mml:mi>
                                        <mml:mi>i</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                                <mml:mrow>
                                    <mml:mi>i</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                </mml:mrow>
                                <mml:mi>N</mml:mi>
                            </mml:msubsup>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2282;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mi mathvariant="double-struck">S</mml:mi>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:math>
</inline-formula> represent a set of nodal points on the sphere where a scalar field 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>f</mml:mi>
                            <mml:mo>:</mml:mo>
                            <mml:msup>
                                <mml:mi mathvariant="double-struck">S</mml:mi>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo>&#x2192;</mml:mo>
                            <mml:mi>&#x211d;</mml:mi>
                        </mml:math>
</inline-formula> is sampled, with corresponding function values 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>f</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:mi>f</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:msub>
                                    <mml:mi mathvariant="bold">x</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
</inline-formula>. The design matrix 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi mathvariant="bold">A</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2208;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mi>&#x2102;</mml:mi>
                                <mml:mrow>
                                    <mml:mi>N</mml:mi>
                                    <mml:mo>&#x00d7;</mml:mo>
                                    <mml:mi>D</mml:mi>
                                </mml:mrow>
                            </mml:msup>
                        </mml:math>
</inline-formula> (complex-valued when using complex spherical harmonics, or real-valued for a real basis) is defined by:
                    <disp-formula id="e2">

                        <mml:math display="block">
                            <mml:msub>
                                <mml:mi>A</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mi mathvariant="italic">ik</mml:mi>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mi>Y</mml:mi>
                                <mml:mrow>
                                    <mml:mi>k</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mo>\</mml:mo>
                                        <mml:mtext mathvariant="italic">mathbf</mml:mtext>
                                        <mml:msub>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">{</mml:mo>
                                                <mml:mi>x</mml:mi>
                                                <mml:mo stretchy="true">}</mml:mo>
                                            </mml:mrow>
                                            <mml:mi>i</mml:mi>
                                        </mml:msub>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>,</mml:mo>
                            <mml:mo>\</mml:mo>
                            <mml:mtext mathvariant="italic">quad</mml:mtext>
                            <mml:mo>\</mml:mo>
                            <mml:mtext mathvariant="italic">text</mml:mtext>
                            <mml:mrow>
                                <mml:mo stretchy="true">{</mml:mo>
                                <mml:mtext mathvariant="italic">for</mml:mtext>
                                <mml:mspace width="0.25em"/>
                                <mml:mo stretchy="true">}</mml:mo>
                            </mml:mrow>
                            <mml:mi>i</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mn>1</mml:mn>
                            <mml:mo>,</mml:mo>
                            <mml:mo>&#x2026;</mml:mo>
                            <mml:mo>,</mml:mo>
                            <mml:mi>N</mml:mi>
                            <mml:mo>\</mml:mo>
                            <mml:mtext mathvariant="italic">text</mml:mtext>
                            <mml:mrow>
                                <mml:mo stretchy="true">{</mml:mo>
                                <mml:mspace width="0.25em"/>
                                <mml:mtext mathvariant="italic">and</mml:mtext>
                                <mml:mspace width="0.25em"/>
                                <mml:mo stretchy="true">}</mml:mo>
                            </mml:mrow>
                            <mml:mi>k</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mn>1</mml:mn>
                            <mml:mo>,</mml:mo>
                            <mml:mo>&#x2026;</mml:mo>
                            <mml:mo>,</mml:mo>
                            <mml:mi>D</mml:mi>
                        </mml:math>
</disp-formula>
                </p>
                <p>This work addresses two fundamental computational problems on the sphere:
                    <list list-type="order">
                        <list-item>
                            <label>1.</label>
                            <p>

                                <bold>Approximation Problem:</bold> Construct a polynomial 
                                <inline-formula>

                                    <mml:math display="inline">
                                        <mml:mi>p</mml:mi>
                                        <mml:mspace width="0.25em"/>
                                        <mml:mo>&#x2208;</mml:mo>
                                        <mml:mspace width="0.25em"/>
                                        <mml:msub>
                                            <mml:mi mathvariant="normal">&#x03a0;</mml:mi>
                                            <mml:mi>L</mml:mi>
                                        </mml:msub>
                                    </mml:math>
</inline-formula> that provides an optimal fit to the sampled data 
                                <inline-formula>

                                    <mml:math display="inline">
                                        <mml:msubsup>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">{</mml:mo>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:msub>
                                                    <mml:mi mathvariant="bold">x</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                                <mml:mo>,</mml:mo>
                                                <mml:mspace width="0.25em"/>
                                                <mml:msub>
                                                    <mml:mi>f</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                                <mml:mo stretchy="true">)</mml:mo>
                                                <mml:mo stretchy="true">}</mml:mo>
                                            </mml:mrow>
                                            <mml:mrow>
                                                <mml:mi>i</mml:mi>
                                                <mml:mo>=</mml:mo>
                                                <mml:mn>1</mml:mn>
                                            </mml:mrow>
                                            <mml:mi>N</mml:mi>
                                        </mml:msubsup>
                                    </mml:math>
</inline-formula>
                            </p>
                        </list-item>
                        <list-item>
                            <label>2.</label>
                            <p>

                                <bold>Quadrature Problem:</bold> Compute weights 
                                <inline-formula>

                                    <mml:math display="inline">
                                        <mml:msubsup>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">{</mml:mo>
                                                <mml:msub>
                                                    <mml:mi>&#x03bc;</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                                <mml:mo stretchy="true">}</mml:mo>
                                            </mml:mrow>
                                            <mml:mrow>
                                                <mml:mi>i</mml:mi>
                                                <mml:mo>=</mml:mo>
                                                <mml:mn>1</mml:mn>
                                            </mml:mrow>
                                            <mml:mi>N</mml:mi>
                                        </mml:msubsup>
                                    </mml:math>
</inline-formula> such that the discrete sum 
                                <inline-formula>

                                    <mml:math display="inline">
                                        <mml:munderover>
                                            <mml:mo>&#x2211;</mml:mo>
                                            <mml:mrow>
                                                <mml:mi>i</mml:mi>
                                                <mml:mo>=</mml:mo>
                                                <mml:mn>1</mml:mn>
                                            </mml:mrow>
                                            <mml:mi>N</mml:mi>
                                        </mml:munderover>
                                        <mml:msub>
                                            <mml:mi>&#x03bc;</mml:mi>
                                            <mml:mi>i</mml:mi>
                                        </mml:msub>
                                        <mml:msub>
                                            <mml:mi>f</mml:mi>
                                            <mml:mi>i</mml:mi>
                                        </mml:msub>
                                    </mml:math>
</inline-formula> accurately approximates the integral 
                                <inline-formula>

                                    <mml:math display="inline">
                                        <mml:mi>I</mml:mi>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">(</mml:mo>
                                            <mml:mi>f</mml:mi>
                                            <mml:mo stretchy="true">)</mml:mo>
                                        </mml:mrow>
                                        <mml:mo>=</mml:mo>
                                        <mml:msub>
                                            <mml:mo>&#x222b;</mml:mo>
                                            <mml:msup>
                                                <mml:mi mathvariant="double-struck">S</mml:mi>
                                                <mml:mn>2</mml:mn>
                                            </mml:msup>
                                        </mml:msub>
                                        <mml:mi>f</mml:mi>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">(</mml:mo>
                                            <mml:mi mathvariant="bold">x</mml:mi>
                                            <mml:mo stretchy="true">)</mml:mo>
                                        </mml:mrow>
                                        <mml:mi mathvariant="italic">d&#x03c9;</mml:mi>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">(</mml:mo>
                                            <mml:mi mathvariant="bold">x</mml:mi>
                                            <mml:mo stretchy="true">)</mml:mo>
                                        </mml:mrow>
                                    </mml:math>
</inline-formula>
                            </p>
                        </list-item>
                    </list>
                </p>
                <p>
                    <xref ref-type="table" rid="T1">
Table 1</xref> explains fundamental notation used throughout the mathematical development. This mathematical foundation establishes the necessary framework for developing our weighted least squares approximation and quadrature methodology, which will be presented in the subsequent sections. The spherical harmonics basis provides the essential building blocks for our polynomial approximations, while the design matrix serves as the crucial linear operator connecting the continuous function space with discrete sampled data.</p>
                <table-wrap id="T1" orientation="portrait" position="float">
                    <label>
Table 1. </label>
                    <caption>
                        <title>Fundamental notation used throughout the mathematical development.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">Symbol</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Meaning</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msup>
                                                <mml:mi mathvariant="double-struck">S</mml:mi>
                                                <mml:mn>2</mml:mn>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Unit sphere 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">{</mml:mo>
                                                <mml:mi mathvariant="bold">x</mml:mi>
                                                <mml:mspace width="0.25em"/>
                                                <mml:mo>&#x2208;</mml:mo>
                                                <mml:mspace width="0.25em"/>
                                                <mml:msup>
                                                    <mml:mi>&#x211d;</mml:mi>
                                                    <mml:mn>3</mml:mn>
                                                </mml:msup>
                                                <mml:mo>:</mml:mo>
                                                <mml:mo>&#x2225;</mml:mo>
                                                <mml:mi mathvariant="bold">x</mml:mi>
                                                <mml:msub>
                                                    <mml:mo>&#x2225;</mml:mo>
                                                    <mml:mn>2</mml:mn>
                                                </mml:msub>
                                                <mml:mo>=</mml:mo>
                                                <mml:mn>1</mml:mn>
                                                <mml:mo stretchy="true">}</mml:mo>
                                            </mml:mrow>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi mathvariant="normal">&#x03a0;</mml:mi>
                                                <mml:mi>L</mml:mi>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Space of spherical polynomials of degree 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mo>&#x2264;</mml:mo>
                                            <mml:mspace width="0.25em"/>
                                            <mml:mi>L</mml:mi>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>L</mml:mi>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Maximum polynomial degree</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>D</mml:mi>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Dimension of 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi mathvariant="normal">&#x03a0;</mml:mi>
                                                <mml:mi>L</mml:mi>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>, 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>D</mml:mi>
                                            <mml:mo>=</mml:mo>
                                            <mml:msup>
                                                <mml:mrow>
                                                    <mml:mo stretchy="true">(</mml:mo>
                                                    <mml:mi>L</mml:mi>
                                                    <mml:mo>+</mml:mo>
                                                    <mml:mn>1</mml:mn>
                                                    <mml:mo stretchy="true">)</mml:mo>
                                                </mml:mrow>
                                                <mml:mn>2</mml:mn>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>X</mml:mi>
                                                <mml:mi>N</mml:mi>
                                            </mml:msub>
                                            <mml:mo>=</mml:mo>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">{</mml:mo>
                                                <mml:msub>
                                                    <mml:mi mathvariant="bold">x</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                                <mml:mo stretchy="true">}</mml:mo>
                                            </mml:mrow>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Node set on 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msup>
                                                <mml:mi mathvariant="double-struck">S</mml:mi>
                                                <mml:mn>2</mml:mn>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>, size 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>N</mml:mi>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>f</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Sample value 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>f</mml:mi>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:msub>
                                                    <mml:mi mathvariant="bold">x</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi mathvariant="bold">A</mml:mi>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Design matrix with 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>A</mml:mi>
                                                <mml:mi mathvariant="italic">ik</mml:mi>
                                            </mml:msub>
                                            <mml:mo>=</mml:mo>
                                            <mml:msub>
                                                <mml:mi>Y</mml:mi>
                                                <mml:mi>k</mml:mi>
                                            </mml:msub>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:msub>
                                                    <mml:mi mathvariant="bold">x</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi mathvariant="bold">W</mml:mi>
                                            <mml:mo>=</mml:mo>
                                            <mml:mo>diag</mml:mo>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:msub>
                                                    <mml:mi>w</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Diagonal sampling-weight matrix</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi mathvariant="bold">c</mml:mi>
                                            <mml:mspace width="0.25em"/>
                                            <mml:mo>&#x2208;</mml:mo>
                                            <mml:mspace width="0.25em"/>
                                            <mml:msup>
                                                <mml:mi>&#x2102;</mml:mi>
                                                <mml:mi>D</mml:mi>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Coefficient vector for approximation</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>&#x03bc;</mml:mi>
                                            <mml:mspace width="0.25em"/>
                                            <mml:mo>&#x2208;</mml:mo>
                                            <mml:mspace width="0.25em"/>
                                            <mml:msup>
                                                <mml:mi>&#x211d;</mml:mi>
                                                <mml:mi>N</mml:mi>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Nodal quadrature weights</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
            </sec>
            <sec id="sec5">
                <title>3.2 Weighted least squares formulation</title>
                <p>To obtain a stable polynomial approximant from scattered data, we minimize a weighted squared residual. Let 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>W</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mo mathvariant="italic">diag</mml:mo>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:msub>
                                    <mml:mi>w</mml:mi>
                                    <mml:mn>1</mml:mn>
                                </mml:msub>
                                <mml:mo>,</mml:mo>
                                <mml:mo>&#x2026;</mml:mo>
                                <mml:mo>,</mml:mo>
                                <mml:msub>
                                    <mml:mi>w</mml:mi>
                                    <mml:mi>N</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
</inline-formula> be a positive diagonal matrix of sampling weights. Define the weighted least-squares objective
                    <disp-formula id="e3">

                        <mml:math display="block">
                            <mml:mi>J</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mi>c</mml:mi>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mo>=</mml:mo>
                            <mml:msubsup>
                                <mml:mi>&#x03a3;</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mi>i</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                                <mml:mi>N</mml:mi>
                            </mml:msubsup>
                            <mml:msub>
                                <mml:mi>w</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo>|</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:msub>
                                        <mml:mi>f</mml:mi>
                                        <mml:mi>i</mml:mi>
                                    </mml:msub>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:msubsup>
                                        <mml:mi>&#x03a3;</mml:mi>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">{</mml:mo>
                                            <mml:mi>k</mml:mi>
                                            <mml:mo>=</mml:mo>
                                            <mml:mn>1</mml:mn>
                                            <mml:mo stretchy="true">}</mml:mo>
                                        </mml:mrow>
                                        <mml:mi>D</mml:mi>
                                    </mml:msubsup>
                                    <mml:msub>
                                        <mml:mi>c</mml:mi>
                                        <mml:mi>k</mml:mi>
                                    </mml:msub>
                                    <mml:msub>
                                        <mml:mi>Y</mml:mi>
                                        <mml:mrow>
                                            <mml:mi>k</mml:mi>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:msub>
                                                    <mml:mi>x</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:mrow>
                                    </mml:msub>
                                    <mml:mo>|</mml:mo>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mo>=</mml:mo>
                            <mml:msubsup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">&#x2016;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:msup>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">(</mml:mo>
                                            <mml:mi>W</mml:mi>
                                            <mml:mo stretchy="true">)</mml:mo>
                                        </mml:mrow>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">{</mml:mo>
                                            <mml:mfrac>
                                                <mml:mn>1</mml:mn>
                                                <mml:mn>2</mml:mn>
                                            </mml:mfrac>
                                            <mml:mo stretchy="true">}</mml:mo>
                                        </mml:mrow>
                                    </mml:msup>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mspace width="0.25em"/>
                                        <mml:mi>A</mml:mi>
                                        <mml:mspace width="0.25em"/>
                                        <mml:mi>C</mml:mi>
                                        <mml:mo>&#x2212;</mml:mo>
                                        <mml:mi>f</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                    <mml:mo stretchy="true">&#x2016;</mml:mo>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                                <mml:mn>2</mml:mn>
                            </mml:msubsup>
                            <mml:mo>,</mml:mo>
                        </mml:math>

                        <label>(3)</label>
</disp-formula>where 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>f</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">[</mml:mo>
                                    <mml:msub>
                                        <mml:mi>f</mml:mi>
                                        <mml:mn>1</mml:mn>
                                    </mml:msub>
                                    <mml:mo>,</mml:mo>
                                    <mml:mo>&#x2026;</mml:mo>
                                    <mml:mo>,</mml:mo>
                                    <mml:msub>
                                        <mml:mi>f</mml:mi>
                                        <mml:mi>N</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="true">]</mml:mo>
                                </mml:mrow>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:mtext mathvariant="normal">and</mml:mtext>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>c</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">[</mml:mo>
                                    <mml:msub>
                                        <mml:mi>c</mml:mi>
                                        <mml:mn>1</mml:mn>
                                    </mml:msub>
                                    <mml:mo>,</mml:mo>
                                    <mml:mo>&#x2026;</mml:mo>
                                    <mml:mo>,</mml:mo>
                                    <mml:msub>
                                        <mml:mi>c</mml:mi>
                                        <mml:mi>D</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="true">]</mml:mo>
                                </mml:mrow>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                        </mml:math>
</inline-formula>. Minimization of 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>J</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mi>c</mml:mi>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
</inline-formula> produces the normal equations
                    <disp-formula id="e4">

                        <mml:math display="block">
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:mi>W</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>A</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>c</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:mi>W</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>f</mml:mi>
                            <mml:mo>,</mml:mo>
                        </mml:math>

                        <label>(4)</label>
</disp-formula>where 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                        </mml:math>
</inline-formula> denotes conjugate transpose (or simply transpose if real-valued harmonics are used). If the weighted normal matrix 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>G</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:mi>W</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>A</mml:mi>
                        </mml:math>
</inline-formula> is invertible, the solution is
                    <disp-formula id="e5">

                        <mml:math display="block">
                            <mml:mover accent="true">
                                <mml:mi>c</mml:mi>
                                <mml:mo stretchy="true">&#x0302;</mml:mo>
                            </mml:mover>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>G</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mi>A</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2217;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:mi mathvariant="italic">Wf</mml:mi>
                            <mml:mo>.</mml:mo>
                        </mml:math>

                        <label>(5)</label>
</disp-formula>
                </p>
                <p>For numerical stability it is common to add Tikhonov regularization 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>&#x03bb;</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2265;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:mn>0</mml:mn>
                        </mml:math>
</inline-formula> and solve
                    <disp-formula id="e6">

                        <mml:math display="block">
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mspace width="0.25em"/>
                                <mml:msup>
                                    <mml:mi>A</mml:mi>
                                    <mml:mo>&#x2217;</mml:mo>
                                </mml:msup>
                                <mml:mi>W</mml:mi>
                                <mml:mspace width="0.25em"/>
                                <mml:mi>A</mml:mi>
                                <mml:mo>+</mml:mo>
                                <mml:mi>&#x03bb;</mml:mi>
                                <mml:mspace width="0.25em"/>
                                <mml:mi>I</mml:mi>
                                <mml:mspace width="0.25em"/>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mover accent="true">
                                <mml:mi>c</mml:mi>
                                <mml:mo stretchy="true">&#x0302;</mml:mo>
                            </mml:mover>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:mi>W</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>f</mml:mi>
                            <mml:mo>,</mml:mo>
                        </mml:math>

                        <label>(6)</label>
</disp-formula>which reduces sensitivity to near-singularity when 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>N</mml:mi>
                        </mml:math>
</inline-formula> is only modestly larger than 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>D</mml:mi>
                        </mml:math>
</inline-formula> or when node geometry is unfavorable.</p>
                <p>

                    <italic toggle="yes">Rationale for weight selection</italic>
                </p>
                <p>The choice of weights 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>w</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> is central for both approximation stability and quadrature accuracy. Two principled approaches are used in our pipeline.</p>
                <p>One practical, geometry-aware approach is Voronoi-area weighting. Let 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>V</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> denote the spherical Voronoi cell associated to x_i (the set of points on S&#x00b2; closer to 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>x</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> than to any other node). Set
                    <disp-formula id="e7">

                        <mml:math display="block">
                            <mml:msub>
                                <mml:mi>w</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:mtext mathvariant="italic">Area</mml:mtext>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:msub>
                                    <mml:mi>V</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mo>.</mml:mo>
                        </mml:math>

                        <label>(7)</label>
</disp-formula>
                </p>
                <p>This assigns to each sample the spherical area it represents; as the node set refines, the discrete weighted sums 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>&#x03a3;</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:msub>
                                <mml:mi>w</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mi>g</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:msub>
                                    <mml:mi>x</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
</inline-formula> converge to 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mo>&#x222b;</mml:mo>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:msup>
                                        <mml:mi>S</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:msup>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mi mathvariant="normal">g</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>d&#x03c9;</mml:mi>
                            <mml:mspace width="0.25em"/>
                        </mml:math>
</inline-formula> for smooth 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>g</mml:mi>
                        </mml:math>
</inline-formula>. In practice we compute spherical Voronoi areas using robust tessellation routines; to avoid tiny sliver cells in highly clustered configurations we enforce a positive lower bound 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>w</mml:mi>
                                <mml:mi mathvariant="italic">min</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula>d then renormalize so that 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>&#x03a3;</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:msub>
                                <mml:mi>w</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:mn>4</mml:mn>
                            <mml:mi>&#x03c0;</mml:mi>
                        </mml:math>
</inline-formula> (the total surface area of 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi>S</mml:mi>
                                <mml:mo>&#x00b2;</mml:mo>
                            </mml:msup>
                        </mml:math>
</inline-formula>). This normalization guarantees exact reproduction of constants by the discrete weighted measure in exact arithmetic.</p>
                <p>A second, theoretically driven approach uses Marcinkiewicz&#x2013;Zygmund (MZ) sampling conditions. Concretely, the pair 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:msub>
                                    <mml:mi>X</mml:mi>
                                    <mml:mi>N</mml:mi>
                                </mml:msub>
                                <mml:mo>,</mml:mo>
                                <mml:mo stretchy="true">{</mml:mo>
                                <mml:msub>
                                    <mml:mi>w</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="true">}</mml:mo>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
</inline-formula> is said to satisfy an MZ inequality for 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>&#x03a0;</mml:mi>
                                <mml:mi>L</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> if there exist constants 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>A</mml:mi>
                            <mml:mn>0</mml:mn>
                            <mml:mo>&gt;</mml:mo>
                            <mml:mn>0</mml:mn>
                        </mml:math>
</inline-formula> and 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>B</mml:mi>
                            <mml:mn>0</mml:mn>
                            <mml:mo>&lt;</mml:mo>
                            <mml:mo>&#x221e;</mml:mo>
                        </mml:math>
</inline-formula> such that
                    <disp-formula id="e8">

                        <mml:math display="block">
                            <mml:mi>A</mml:mi>
                            <mml:mn>0</mml:mn>
                            <mml:mspace width="0.25em"/>
                            <mml:mo stretchy="true">&#x2016;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>p</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo stretchy="true">&#x2016;</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:msup>
                                        <mml:mi>L</mml:mi>
                                        <mml:mi>x</mml:mi>
                                    </mml:msup>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>S</mml:mi>
                                        <mml:mo>&#x00b2;</mml:mo>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2264;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:munderover>
                                <mml:mo>&#x2211;</mml:mo>
                                <mml:mrow>
                                    <mml:mi>i</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                </mml:mrow>
                                <mml:mi>N</mml:mi>
                            </mml:munderover>
                            <mml:msub>
                                <mml:mi>w</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo>|</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mi>p</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:msub>
                                            <mml:mi>x</mml:mi>
                                            <mml:mi>i</mml:mi>
                                        </mml:msub>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                    <mml:mo>|</mml:mo>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2264;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>B</mml:mi>
                            <mml:mn>0</mml:mn>
                            <mml:mspace width="0.25em"/>
                            <mml:msub>
                                <mml:mrow>
                                    <mml:mo stretchy="true">&#x2016;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mi>p</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo stretchy="true">&#x2016;</mml:mo>
                                </mml:mrow>
                                <mml:msup>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">{</mml:mo>
                                        <mml:msup>
                                            <mml:mi>L</mml:mi>
                                            <mml:mn>2</mml:mn>
                                        </mml:msup>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">(</mml:mo>
                                            <mml:msup>
                                                <mml:mi>S</mml:mi>
                                                <mml:mn>2</mml:mn>
                                            </mml:msup>
                                            <mml:mo stretchy="true">)</mml:mo>
                                        </mml:mrow>
                                        <mml:mo stretchy="true">}</mml:mo>
                                    </mml:mrow>
                                    <mml:mn>2</mml:mn>
                                </mml:msup>
                            </mml:msub>
                            <mml:mspace width="0.25em"/>
                            <mml:mtext mathvariant="normal">for</mml:mtext>
                            <mml:mspace width="0.25em"/>
                            <mml:mi mathvariant="normal">all</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>p</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2208;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>&#x03a0;</mml:mi>
                            <mml:mo>_</mml:mo>
                            <mml:mi>L</mml:mi>
                            <mml:mo>.</mml:mo>
                        </mml:math>

                        <label>(8)</label>
</disp-formula>
                </p>
                <p>When (8) holds, the discrete bilinear form induced by W is spectrally equivalent to the continuous 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi>L</mml:mi>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:math>
</inline-formula> inner product on 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>&#x03a0;</mml:mi>
                                <mml:mi>L</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula>; this spectral equivalence implies that 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>G</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:mi>W</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>A</mml:mi>
                        </mml:math>
</inline-formula> is well-conditioned (with eigenvalues bounded between A0 and B0 up to constant scaling) and leads to stability and approximation-error bounds for the WLS projector. Important theoretical results show that suitably dense node sets (spherical designs, minimum-energy points, or other MZ families) admit positive weights satisfying (8), and these MZ conditions underpin positivity and convergence proofs for quadrature weights derived from WLS. 
                    <xref ref-type="table" rid="T2">
Table 2</xref> compares weight strategies in practice and their trade-offs.</p>
                <table-wrap id="T2" orientation="portrait" position="float">
                    <label>
Table 2. </label>
                    <caption>
                        <title>(Weight selection strategies) &#x2014; explained inline.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">Strategy</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Definition</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Advantage</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Practical cost</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Uniform</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>w</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo>=</mml:mo>
                                            <mml:mtext mathvariant="italic">constant</mml:mtext>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">trivial to implement</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">poor for clustered nodes</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Voronoi-area (proposed)</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>w</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mo>=</mml:mo>
                                            <mml:mtext mathvariant="italic">Area</mml:mtext>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:msub>
                                                    <mml:mi>V</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">balances density; approximates area element</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">requires Voronoi tessellation</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">MZ-constructed
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">weights chosen to satisfy (8)</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">provable stability and positivity</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">computationally involved</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Density-inverse
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>w</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:mspace width="0.25em"/>
                                            <mml:mo>&#x221d;</mml:mo>
                                            <mml:mspace width="0.25em"/>
                                            <mml:mfrac>
                                                <mml:mn>1</mml:mn>
                                                <mml:mrow>
                                                    <mml:mi>&#x03c1;</mml:mi>
                                                    <mml:mrow>
                                                        <mml:mo stretchy="true">(</mml:mo>
                                                        <mml:msub>
                                                            <mml:mi>x</mml:mi>
                                                            <mml:mi>i</mml:mi>
                                                        </mml:msub>
                                                        <mml:mo stretchy="true">)</mml:mo>
                                                    </mml:mrow>
                                                </mml:mrow>
                                            </mml:mfrac>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">heuristic compensation</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">density estimate needed</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
                <p>Voronoi-area weights are recommended as the default: they are geometrically meaningful, easy to compute for moderate N, and work well in conjunction with normalization and mild regularization. When node geometry is near-ideal and one can compute MZ weights, those give the strongest theoretical guarantees.</p>
            </sec>
            <sec id="sec6">
                <title>3.3 Consensus-based distributed solution (The alternating direction method of multipliers)</title>
                <p>When N is large (e.g., tens or hundreds of thousands) or when data are naturally distributed across sensing locations or compute nodes, solving the global normal system centrally becomes costly or infeasible. We therefore recast the WLS problem as a consensus optimization problem that partitions nodes and solves smaller local problems with occasional communications.</p>
                <p>Partition the node set 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>X</mml:mi>
                                <mml:mi>N</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> into M disjoint subsets 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>X</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:msub>
                                        <mml:mi>N</mml:mi>
                                        <mml:mn>1</mml:mn>
                                    </mml:msub>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>,</mml:mo>
                            <mml:mo>&#x2026;</mml:mo>
                            <mml:mo>,</mml:mo>
                            <mml:msub>
                                <mml:mi>X</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:msub>
                                        <mml:mi>N</mml:mi>
                                        <mml:mi>M</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msub>
                        </mml:math>
</inline-formula> with sizes N_m summing to 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>N</mml:mi>
                        </mml:math>
</inline-formula>. On subset m assemble the local design matrix 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>m</mml:mi>
                                    <mml:mo stretchy="true">)</mml:mo>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2208;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mi>C</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:msub>
                                        <mml:mi>N</mml:mi>
                                        <mml:mi>m</mml:mi>
                                    </mml:msub>
                                    <mml:mo>&#x00d7;</mml:mo>
                                    <mml:mi>D</mml:mi>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                        </mml:math>
</inline-formula>, local weight matrix 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi>W</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>m</mml:mi>
                                    <mml:mo stretchy="true">)</mml:mo>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2208;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mi>R</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:msub>
                                        <mml:mi>N</mml:mi>
                                        <mml:mi>m</mml:mi>
                                    </mml:msub>
                                    <mml:mo>&#x00d7;</mml:mo>
                                    <mml:msub>
                                        <mml:mi>N</mml:mi>
                                        <mml:mi>m</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                        </mml:math>
</inline-formula>, and local data 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi>f</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>m</mml:mi>
                                    <mml:mo stretchy="true">)</mml:mo>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2208;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mi>C</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:msub>
                                        <mml:mi>N</mml:mi>
                                        <mml:mi>m</mml:mi>
                                    </mml:msub>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                        </mml:math>
</inline-formula>. Introduce local coefficient variables 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>c</mml:mi>
                                <mml:mi>m</mml:mi>
                            </mml:msub>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2208;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mi>C</mml:mi>
                                <mml:mi>D</mml:mi>
                            </mml:msup>
                        </mml:math>
</inline-formula> and a global consensus vector 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>z</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2208;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mi>C</mml:mi>
                                <mml:mi>D</mml:mi>
                            </mml:msup>
                        </mml:math>
</inline-formula>. The constrained consensus formulation is
                    <disp-formula id="e9">

                        <mml:math display="block">
                            <mml:mo mathvariant="italic">minimize</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:mtext mathvariant="italic">over</mml:mtext>
                            <mml:mspace width="0.25em"/>
                            <mml:mrow>
                                <mml:mo stretchy="true">{</mml:mo>
                                <mml:mspace width="0.25em"/>
                                <mml:msub>
                                    <mml:mi>c</mml:mi>
                                    <mml:mi>m</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="true">}</mml:mo>
                            </mml:mrow>
                            <mml:msubsup>
                                <mml:mi>&#x03a3;</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mi>m</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                                <mml:mi>M</mml:mi>
                            </mml:msubsup>
                            <mml:msubsup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">&#x2016;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:msup>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">(</mml:mo>
                                            <mml:msup>
                                                <mml:mi>W</mml:mi>
                                                <mml:mrow>
                                                    <mml:mo stretchy="true">{</mml:mo>
                                                    <mml:mo stretchy="true">(</mml:mo>
                                                    <mml:mi>m</mml:mi>
                                                    <mml:mo stretchy="true">)</mml:mo>
                                                    <mml:mo stretchy="true">}</mml:mo>
                                                </mml:mrow>
                                            </mml:msup>
                                            <mml:mo stretchy="true">)</mml:mo>
                                        </mml:mrow>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">{</mml:mo>
                                            <mml:mfrac>
                                                <mml:mn>1</mml:mn>
                                                <mml:mn>2</mml:mn>
                                            </mml:mfrac>
                                            <mml:mo stretchy="true">}</mml:mo>
                                        </mml:mrow>
                                    </mml:msup>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mspace width="0.25em"/>
                                        <mml:msubsup>
                                            <mml:mi>A</mml:mi>
                                            <mml:mi>m</mml:mi>
                                            <mml:mrow>
                                                <mml:mrow>
                                                    <mml:mo stretchy="true">{</mml:mo>
                                                    <mml:mo stretchy="true">(</mml:mo>
                                                    <mml:mi>m</mml:mi>
                                                    <mml:mo stretchy="true">)</mml:mo>
                                                    <mml:mo stretchy="true">}</mml:mo>
                                                </mml:mrow>
                                                <mml:mi>c</mml:mi>
                                            </mml:mrow>
                                        </mml:msubsup>
                                        <mml:mo>&#x2212;</mml:mo>
                                        <mml:msup>
                                            <mml:mi>f</mml:mi>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">{</mml:mo>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mi>m</mml:mi>
                                                <mml:mo stretchy="true">)</mml:mo>
                                                <mml:mo stretchy="true">}</mml:mo>
                                            </mml:mrow>
                                        </mml:msup>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                    <mml:mo stretchy="true">&#x2016;</mml:mo>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                                <mml:mn>2</mml:mn>
                            </mml:msubsup>
                            <mml:mtext mathvariant="normal">subject to</mml:mtext>
                            <mml:mspace width="0.25em"/>
                            <mml:msub>
                                <mml:mi>c</mml:mi>
                                <mml:mi>m</mml:mi>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:mi>z</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mtext mathvariant="normal">for each</mml:mtext>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>m</mml:mi>
                            <mml:mo>.</mml:mo>
                        </mml:math>

                        <label>(9)</label>
</disp-formula>
                </p>
                <p>We solve (9) via ADMM in scaled form. Let 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>u</mml:mi>
                                <mml:mi>m</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> denote scaled dual variables. ADMM performs the following iterative updates for 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>t</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mn>0</mml:mn>
                            <mml:mo>,</mml:mo>
                            <mml:mn>1</mml:mn>
                            <mml:mo>,</mml:mo>
                            <mml:mn>2</mml:mn>
                            <mml:mo>,</mml:mo>
                            <mml:mo>&#x2026;</mml:mo>
                            <mml:mo>.</mml:mo>
                        </mml:math>
</inline-formula>
                </p>
                <p>Local update (independent and parallel for each m):
                    <disp-formula id="e10">

                        <mml:math display="block">
                            <mml:msubsup>
                                <mml:mi>c</mml:mi>
                                <mml:mi>m</mml:mi>
                                <mml:mrow>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>1</mml:mn>
                                </mml:mrow>
                            </mml:msubsup>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mtext mathvariant="italic">argmin</mml:mtext>
                                <mml:mi>c</mml:mi>
                            </mml:msub>
                            <mml:mspace width="0.25em"/>
                            <mml:mrow>
                                <mml:mo stretchy="true">[</mml:mo>
                                <mml:mspace width="0.25em"/>
                                <mml:msup>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">&#x2016;</mml:mo>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:msup>
                                            <mml:mi>W</mml:mi>
                                            <mml:msup>
                                                <mml:mi>m</mml:mi>
                                                <mml:mrow>
                                                    <mml:mn>1</mml:mn>
                                                    <mml:mo>/</mml:mo>
                                                    <mml:mn>2</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:msup>
                                        <mml:mspace width="0.25em"/>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mspace width="0.25em"/>
                                        <mml:msup>
                                            <mml:mi>A</mml:mi>
                                            <mml:mi>m</mml:mi>
                                        </mml:msup>
                                        <mml:mi>c</mml:mi>
                                        <mml:mo>&#x2212;</mml:mo>
                                        <mml:msup>
                                            <mml:mi>f</mml:mi>
                                            <mml:mi>m</mml:mi>
                                        </mml:msup>
                                        <mml:mo stretchy="true">&#x2016;</mml:mo>
                                    </mml:mrow>
                                    <mml:msup>
                                        <mml:mn>2</mml:mn>
                                        <mml:mn>2</mml:mn>
                                    </mml:msup>
                                </mml:msup>
                                <mml:mo>+</mml:mo>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>&#x03c1;</mml:mi>
                                    <mml:mo>/</mml:mo>
                                    <mml:mn>2</mml:mn>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mspace width="0.25em"/>
                                <mml:msub>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">&#x2016;</mml:mo>
                                        <mml:mspace width="0.25em"/>
                                        <mml:mi>c</mml:mi>
                                        <mml:mo>&#x2212;</mml:mo>
                                        <mml:msup>
                                            <mml:mi>z</mml:mi>
                                            <mml:mi>t</mml:mi>
                                        </mml:msup>
                                        <mml:mo>+</mml:mo>
                                        <mml:msub>
                                            <mml:mi>u</mml:mi>
                                            <mml:msup>
                                                <mml:mi>m</mml:mi>
                                                <mml:mi>t</mml:mi>
                                            </mml:msup>
                                        </mml:msub>
                                        <mml:mo stretchy="true">&#x2016;</mml:mo>
                                    </mml:mrow>
                                    <mml:msup>
                                        <mml:mn>2</mml:mn>
                                        <mml:mn>2</mml:mn>
                                    </mml:msup>
                                </mml:msub>
                                <mml:mspace width="0.25em"/>
                                <mml:mo stretchy="true">]</mml:mo>
                            </mml:mrow>
                            <mml:mo>.</mml:mo>
                        </mml:math>

                        <label>(10)</label>
</disp-formula>
                </p>
                <p>This quadratic minimization has the closed-form normal-equation form
                    <disp-formula id="e11">

                        <mml:math display="block">
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mspace width="0.25em"/>
                                <mml:msup>
                                    <mml:mi>A</mml:mi>
                                    <mml:mrow>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">{</mml:mo>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mi>m</mml:mi>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x2217;</mml:mo>
                                            <mml:mo stretchy="true">}</mml:mo>
                                        </mml:mrow>
                                        <mml:msup>
                                            <mml:mi>W</mml:mi>
                                            <mml:mrow>
                                                <mml:mrow>
                                                    <mml:mo stretchy="true">{</mml:mo>
                                                    <mml:mo stretchy="true">(</mml:mo>
                                                    <mml:mi>m</mml:mi>
                                                    <mml:mo stretchy="true">)</mml:mo>
                                                    <mml:mo stretchy="true">}</mml:mo>
                                                </mml:mrow>
                                                <mml:msup>
                                                    <mml:mi>A</mml:mi>
                                                    <mml:mrow>
                                                        <mml:mo stretchy="true">{</mml:mo>
                                                        <mml:mo stretchy="true">(</mml:mo>
                                                        <mml:mi>m</mml:mi>
                                                        <mml:mo stretchy="true">)</mml:mo>
                                                        <mml:mo stretchy="true">}</mml:mo>
                                                    </mml:mrow>
                                                </mml:msup>
                                            </mml:mrow>
                                        </mml:msup>
                                    </mml:mrow>
                                </mml:msup>
                                <mml:mo>+</mml:mo>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mfrac>
                                        <mml:mi>&#x03c1;</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:mfrac>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mi>I</mml:mi>
                                <mml:mspace width="0.25em"/>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:msubsup>
                                <mml:mi>c</mml:mi>
                                <mml:mi>m</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">)</mml:mo>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msubsup>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">{</mml:mo>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">(</mml:mo>
                                            <mml:mi>m</mml:mi>
                                            <mml:mo stretchy="true">)</mml:mo>
                                        </mml:mrow>
                                        <mml:mo>&#x2217;</mml:mo>
                                        <mml:mo stretchy="true">}</mml:mo>
                                    </mml:mrow>
                                    <mml:msup>
                                        <mml:mi>W</mml:mi>
                                        <mml:mrow>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">{</mml:mo>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mi>m</mml:mi>
                                                <mml:mo stretchy="true">)</mml:mo>
                                                <mml:mo stretchy="true">}</mml:mo>
                                            </mml:mrow>
                                            <mml:msup>
                                                <mml:mi>f</mml:mi>
                                                <mml:mrow>
                                                    <mml:mo stretchy="true">{</mml:mo>
                                                    <mml:mo stretchy="true">(</mml:mo>
                                                    <mml:mi>m</mml:mi>
                                                    <mml:mo stretchy="true">)</mml:mo>
                                                    <mml:mo stretchy="true">}</mml:mo>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:mrow>
                                    </mml:msup>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mo>+</mml:mo>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mfrac>
                                    <mml:mi>&#x03c1;</mml:mi>
                                    <mml:mn>2</mml:mn>
                                </mml:mfrac>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mspace width="0.25em"/>
                                <mml:msup>
                                    <mml:mi>z</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">{</mml:mo>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>t</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                        <mml:mo stretchy="true">}</mml:mo>
                                    </mml:mrow>
                                </mml:msup>
                                <mml:mo>&#x2212;</mml:mo>
                                <mml:msubsup>
                                    <mml:mi>u</mml:mi>
                                    <mml:mi>m</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">{</mml:mo>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>t</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                        <mml:mo stretchy="true">}</mml:mo>
                                    </mml:mrow>
                                </mml:msubsup>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mo>.</mml:mo>
                        </mml:math>

                        <label>(11)</label>
</disp-formula>
                </p>
                <p>Global consensus update (aggregation step):
                    <disp-formula id="e12">

                        <mml:math display="block">
                            <mml:msup>
                                <mml:mi>z</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">)</mml:mo>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mo>=</mml:mo>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mfrac>
                                    <mml:mn>1</mml:mn>
                                    <mml:mi>M</mml:mi>
                                </mml:mfrac>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:msubsup>
                                <mml:mi>&#x03a3;</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mi>m</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                                <mml:mi>M</mml:mi>
                            </mml:msubsup>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mspace width="0.25em"/>
                                <mml:msubsup>
                                    <mml:mi>c</mml:mi>
                                    <mml:mi>m</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">{</mml:mo>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>t</mml:mi>
                                        <mml:mo>+</mml:mo>
                                        <mml:mn>1</mml:mn>
                                        <mml:mo stretchy="true">)</mml:mo>
                                        <mml:mo stretchy="true">}</mml:mo>
                                    </mml:mrow>
                                </mml:msubsup>
                                <mml:mo>+</mml:mo>
                                <mml:msubsup>
                                    <mml:mi>u</mml:mi>
                                    <mml:mi>m</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">{</mml:mo>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>t</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                        <mml:mo stretchy="true">}</mml:mo>
                                    </mml:mrow>
                                </mml:msubsup>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mo>.</mml:mo>
                        </mml:math>

                        <label>(12)</label>
</disp-formula>
                </p>
                <p>Dual updates (local):
                    <disp-formula id="e13">

                        <mml:math display="block">
                            <mml:msubsup>
                                <mml:mi>u</mml:mi>
                                <mml:mi>m</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">)</mml:mo>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msubsup>
                            <mml:mo>=</mml:mo>
                            <mml:msubsup>
                                <mml:mi>u</mml:mi>
                                <mml:mi>m</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo stretchy="true">)</mml:mo>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msubsup>
                            <mml:mo>+</mml:mo>
                            <mml:msubsup>
                                <mml:mi>c</mml:mi>
                                <mml:mi>m</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">)</mml:mo>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msubsup>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:msup>
                                <mml:mi>z</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">)</mml:mo>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mo>.</mml:mo>
                        </mml:math>

                        <label>(13)</label>
</disp-formula>
                </p>
                <p>Key practical observations: each local linear system (11) is 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>D</mml:mi>
                            <mml:mo>&#x00d7;</mml:mo>
                            <mml:mi>D</mml:mi>
                        </mml:math>
</inline-formula>; since 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>D</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>L</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mo>&#x00b2;</mml:mo>
                            </mml:msup>
                        </mml:math>
</inline-formula> is driven by the chosen polynomial degree it is often small enough to factorize (Cholesky) once and reuse across ADMM iterations, so per-iteration cost is low. Communication cost per iteration is dominated by the transmission of D-dimensional vectors 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msubsup>
                                <mml:mi>c</mml:mi>
                                <mml:mi>m</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">)</mml:mo>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msubsup>
                            <mml:mo>+</mml:mo>
                            <mml:msubsup>
                                <mml:mi>u</mml:mi>
                                <mml:mi>m</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>t</mml:mi>
                                    <mml:mo stretchy="true">)</mml:mo>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msubsup>
                        </mml:math>
</inline-formula> to an aggregator (or by neighbor communications in a decentralized averaging implementation). ADMM convergence theory guarantees that for convex objectives (as here) the iterates converge to a solution; in practice selecting &#x03c1; proportional to a typical eigenvalue scale of local normal matrices and using warm starts significantly speeds convergence. 
                    <xref ref-type="table" rid="T3">
Table 3</xref> summarizes computational costs and communication trade-offs.</p>
                <table-wrap id="T3" orientation="portrait" position="float">
                    <label>
Table 3. </label>
                    <caption>
                        <title>Complexity and communication.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">Item</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Centralized approach</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Distributed (ADMM) approach</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Largest linear solve</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Solve 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>D</mml:mi>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:mi>D</mml:mi>
                                        </mml:math>
</inline-formula> with assembly cost from 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>N</mml:mi>
                                        </mml:math>
</inline-formula> points</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Solve M local 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>D</mml:mi>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:mi>D</mml:mi>
                                        </mml:math>
</inline-formula> systems of size 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>N</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:msub>
                                        </mml:math>
</inline-formula> each; each local solve 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>D</mml:mi>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:mi>D</mml:mi>
                                        </mml:math>
</inline-formula> if using normal form</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Per-iteration communication</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>N</mml:mi>
                                            <mml:mo>/</mml:mo>
                                            <mml:mi>A</mml:mi>
                                        </mml:math>
</inline-formula> (centralized)</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Exchange of 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>M</mml:mi>
                                        </mml:math>
</inline-formula> vectors of length 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>D</mml:mi>
                                        </mml:math>
</inline-formula> per ADMM iteration</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Memory per worker</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>O</mml:mi>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mi>N</mml:mi>
                                                <mml:mspace width="0.25em"/>
                                                <mml:mi>D</mml:mi>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:math>
</inline-formula> centralized</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>O</mml:mi>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:msub>
                                                    <mml:mi>N</mml:mi>
                                                    <mml:mi>m</mml:mi>
                                                </mml:msub>
                                                <mml:mi>D</mml:mi>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:math>
</inline-formula> per worker</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Scalability</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">limited by single machine</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">scales with M; communication-limited
</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
                <p>This table highlights that distributed ADMM shifts the computational bottleneck from a single expensive global assembly to many smaller local solves and short vectors exchanged between workers. For very large D the per-worker cost may become nontrivial; in that case hybrid approaches (block-coordinate ADMM, approximate local solves, reduced-rank bases) are practical extensions.</p>
            </sec>
            <sec id="sec7">
                <title>3.4 Quadrature rule derivation from weighted least squares</title>
                <p>Once the coefficient vector &#x0109; is available (either from the centralized solve or from ADMM consensus z), the WLS polynomial approximation is
                    <disp-formula id="e14">

                        <mml:math display="block">
                            <mml:mover accent="true">
                                <mml:mi>p</mml:mi>
                                <mml:mo stretchy="true">&#x0302;</mml:mo>
                            </mml:mover>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mi>x</mml:mi>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mo>=</mml:mo>
                            <mml:msubsup>
                                <mml:mi>&#x03a3;</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mi>k</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                                <mml:mi>D</mml:mi>
                            </mml:msubsup>
                            <mml:msub>
                                <mml:mover accent="true">
                                    <mml:mi>c</mml:mi>
                                    <mml:mo stretchy="true">&#x0302;</mml:mo>
                                </mml:mover>
                                <mml:mi>k</mml:mi>
                            </mml:msub>
                            <mml:msub>
                                <mml:mi>Y</mml:mi>
                                <mml:mrow>
                                    <mml:mi>k</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>x</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>.</mml:mo>
                        </mml:math>

                        <label>(14)</label>
</disp-formula>
                </p>
                <p>Because integration is linear, we compute
                    <disp-formula id="e15">

                        <mml:math display="block">
                            <mml:mi>I</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mover accent="true">
                                    <mml:mi>p</mml:mi>
                                    <mml:mo stretchy="true">&#x0302;</mml:mo>
                                </mml:mover>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mo>=</mml:mo>
                            <mml:msubsup>
                                <mml:mi>&#x03a3;</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mi>k</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                                <mml:mi>D</mml:mi>
                            </mml:msubsup>
                            <mml:msub>
                                <mml:mover accent="true">
                                    <mml:mi>c</mml:mi>
                                    <mml:mo stretchy="true">&#x0302;</mml:mo>
                                </mml:mover>
                                <mml:mi>k</mml:mi>
                            </mml:msub>
                            <mml:mi>I</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:msub>
                                    <mml:mi>Y</mml:mi>
                                    <mml:mi>k</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mo>,</mml:mo>
                            <mml:mtext mathvariant="normal">where</mml:mtext>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>I</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:msub>
                                    <mml:mi>Y</mml:mi>
                                    <mml:mi>k</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mo>&#x222b;</mml:mo>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:msup>
                                        <mml:mi>S</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:msup>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msub>
                            <mml:msub>
                                <mml:mi>Y</mml:mi>
                                <mml:mrow>
                                    <mml:mi>k</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>x</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                    <mml:mi mathvariant="italic">d&#x03c9;</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>x</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>.</mml:mo>
                        </mml:math>

                        <label>(15)</label>
</disp-formula>
                </p>
                <p>For the standard orthonormal spherical harmonics, the only nonzero integral is the constant mode 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msubsup>
                                <mml:mi>Y</mml:mi>
                                <mml:mn>0</mml:mn>
                                <mml:mn>0</mml:mn>
                            </mml:msubsup>
                        </mml:math>
</inline-formula> (up to normalization). Let 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>v</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2208;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mi>C</mml:mi>
                                <mml:mi>D</mml:mi>
                            </mml:msup>
                        </mml:math>
</inline-formula> denote the vector of basis integrals v_k = I(Y_k). Substituting the regularized WLS solution 

                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mover accent="true">
                                <mml:mi>c</mml:mi>
                                <mml:mo stretchy="true">&#x0302;</mml:mo>
                            </mml:mover>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:msup>
                                        <mml:mi>A</mml:mi>
                                        <mml:mo>&#x2217;</mml:mo>
                                    </mml:msup>
                                    <mml:mi>W</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mi>A</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mi>&#x03bb;</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mi>I</mml:mi>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:mi>W</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>A</mml:mi>
                        </mml:math>
</inline-formula> W f into (15) yields
                    <disp-formula id="e16">

                        <mml:math display="block">
                            <mml:mi>I</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mover accent="true">
                                    <mml:mi>p</mml:mi>
                                    <mml:mo stretchy="true">&#x0302;</mml:mo>
                                </mml:mover>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>v</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:mover accent="true">
                                <mml:mi>c</mml:mi>
                                <mml:mo stretchy="true">&#x0302;</mml:mo>
                            </mml:mover>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>v</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:msup>
                                        <mml:mi>A</mml:mi>
                                        <mml:mo>&#x2217;</mml:mo>
                                    </mml:msup>
                                    <mml:mi>W</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mi>A</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mi>&#x03bb;</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mi>I</mml:mi>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:mi mathvariant="italic">Wf</mml:mi>
                            <mml:mo>.</mml:mo>
                        </mml:math>

                        <label>(16)</label>
</disp-formula>
                </p>
                <p>Rearranging this as an inner product with the data vector f gives a nodal quadrature representation 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>I</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mover accent="true">
                                    <mml:mi>p</mml:mi>
                                    <mml:mo stretchy="true">&#x0302;</mml:mo>
                                </mml:mover>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>&#x03bc;</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:mi>f</mml:mi>
                        </mml:math>
</inline-formula> with
                    <disp-formula id="e17">

                        <mml:math display="block">
                            <mml:mi>&#x03bc;</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mi>W</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>A</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:msup>
                                        <mml:mi>A</mml:mi>
                                        <mml:mo>&#x2217;</mml:mo>
                                    </mml:msup>
                                    <mml:mi>W</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mi>A</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mi>&#x03bb;</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mi>I</mml:mi>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">{</mml:mo>
                                        <mml:mo>&#x2212;</mml:mo>
                                        <mml:mn>1</mml:mn>
                                        <mml:mo stretchy="true">}</mml:mo>
                                    </mml:mrow>
                                    <mml:mi>v</mml:mi>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mo>.</mml:mo>
                        </mml:math>

                        <label>(17)</label>
</disp-formula>
                </p>
                <p>Equivalently, compute 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>y</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:msup>
                                        <mml:mi>A</mml:mi>
                                        <mml:mo>&#x2217;</mml:mo>
                                    </mml:msup>
                                    <mml:mi>W</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mi>A</mml:mi>
                                    <mml:mo>+</mml:mo>
                                    <mml:mi>&#x03bb;</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mi>I</mml:mi>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mrow>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">{</mml:mo>
                                        <mml:mo>&#x2212;</mml:mo>
                                        <mml:mn>1</mml:mn>
                                        <mml:mo stretchy="true">}</mml:mo>
                                    </mml:mrow>
                                    <mml:mi>v</mml:mi>
                                </mml:mrow>
                            </mml:msup>
                        </mml:math>
</inline-formula> and then 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>&#x03bc;</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mi>W</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>A</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>y</mml:mi>
                        </mml:math>
</inline-formula>. Thus, the quadrature weights 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>&#x03bc;</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2208;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mi>R</mml:mi>
                                <mml:mi>N</mml:mi>
                            </mml:msup>
                        </mml:math>
</inline-formula> are obtained with a single 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>D</mml:mi>
                            <mml:mo>&#x00d7;</mml:mo>
                            <mml:mi>D</mml:mi>
                        </mml:math>
</inline-formula> linear solve plus matrix&#x2013;vector operations.</p>
                <p>

                    <bold>

                        <italic toggle="yes">Polynomial exactness and positivity</italic>
</bold>
                </p>
                <p>The derived rule reproduces integrals of all polynomials in 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>&#x03a0;</mml:mi>
                                <mml:mi>L</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> exactly when &#x03bb; = 0 and 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:mi>W</mml:mi>
                        </mml:math>
</inline-formula> A is invertible and v corresponds to the integral of basis functions; this follows directly from the algebra above. Under the Marcinkiewicz&#x2013;Zygmund inequality (8), 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>G</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:mi>W</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>A</mml:mi>
                        </mml:math>
</inline-formula> is spectrally equivalent to the continuous 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi>L</mml:mi>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:math>
</inline-formula> Gram matrix and remains well-conditioned; the combination of spectral equivalence and the fact that the integration functional restricted to 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>&#x03a0;</mml:mi>
                                <mml:mi>L</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> is positive on nonnegative polynomials leads to the existence of nonnegative weights &#x03bc; reproducing 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>&#x03a0;</mml:mi>
                                <mml:mi>L</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula>. We now state a concise positivity sketch.</p>
                <p>
Positivity sketch. Suppose 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:msub>
                                    <mml:mi>X</mml:mi>
                                    <mml:mi>N</mml:mi>
                                </mml:msub>
                                <mml:mo>,</mml:mo>
                                <mml:mo stretchy="true">{</mml:mo>
                                <mml:msub>
                                    <mml:mi>w</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="true">}</mml:mo>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
</inline-formula> satisfies the MZ inequality (8). Consider the linear functional 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>L</mml:mi>
                                <mml:mi>p</mml:mi>
                            </mml:msub>
                            <mml:mo>:</mml:mo>
                            <mml:msub>
                                <mml:mi>&#x03a0;</mml:mi>
                                <mml:mi>L</mml:mi>
                            </mml:msub>
                            <mml:mo>&#x2192;</mml:mo>
                            <mml:mi>R</mml:mi>
                        </mml:math>
</inline-formula> given by 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>L</mml:mi>
                                <mml:mrow>
                                    <mml:mi>p</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>q</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mo>&#x222b;</mml:mo>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:msup>
                                        <mml:mi>S</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:msup>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mi>q</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mi>x</mml:mi>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mi mathvariant="italic">d&#x03c9;</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mi>x</mml:mi>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
</inline-formula>. On the finite-dimensional space 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>&#x03a0;</mml:mi>
                                <mml:mi>L</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> the Riesz representation implies the existence of a unique vector 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>&#x03b1;</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2208;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mi>R</mml:mi>
                                <mml:mi>D</mml:mi>
                            </mml:msup>
                        </mml:math>
</inline-formula> such that 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>L</mml:mi>
                                <mml:mrow>
                                    <mml:mi>p</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>q</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:msup>
                                <mml:mi>&#x03b1;</mml:mi>
                                <mml:mi>T</mml:mi>
                            </mml:msup>
                            <mml:msub>
                                <mml:mi>c</mml:mi>
                                <mml:mi>q</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> where c_q are coefficients of q in the chosen basis. The discrete representation 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>L</mml:mi>
                                <mml:mrow>
                                    <mml:mi>d</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>q</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mi>&#x03a3;</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:msub>
                                <mml:mi>&#x03bc;</mml:mi>
                                <mml:mi>i</mml:mi>
                            </mml:msub>
                            <mml:mi>q</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:msub>
                                    <mml:mi>x</mml:mi>
                                    <mml:mi>i</mml:mi>
                                </mml:msub>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
</inline-formula> aims to match 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>L</mml:mi>
                                <mml:mi>p</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> on 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>&#x03a0;</mml:mi>
                                <mml:mi>L</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula>. MZ ensures that point-evaluation functionals are bounded in the dual norm and that the convex cone generated by point evaluations is large enough to contain the integration functional; constructive arguments (see references) show one can choose &#x03bc;_i &#x2265; 0 such that 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>L</mml:mi>
                                <mml:mi>d</mml:mi>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mi>L</mml:mi>
                                <mml:mi>p</mml:mi>
                            </mml:msub>
                            <mml:mi mathvariant="italic">on</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:msub>
                                <mml:mi>&#x03a0;</mml:mi>
                                <mml:mi>L</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula>. The WLS-derived &#x03bc; coincide with one such representation when regularization and normalization are chosen appropriately. Full rigorous proofs with constants appear in the positive-quadrature literature (Mhaskar&#x2013;Narcowich&#x2013;Ward and follow-ups). 
                    <xref ref-type="table" rid="T4">
Table 4</xref> presents key properties of the WLS-derived quadrature in comparison to common alternatives.</p>
                <table-wrap id="T4" orientation="portrait" position="float">
                    <label>
Table 4. </label>
                    <caption>
                        <title>Quadrature properties.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">Property</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
WLS-derived &#x03bc; (this work)</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Spherical designs</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Simple area sampling</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Exactness degree</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2264;L (by design)</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">t (by design)</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">0 (only constant)</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Weight positivity</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Yes, under MZ / adequate N</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Yes (equal positive weights)</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Yes (positive areas)</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Computational cost</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">One D&#x00d7;D solve + local solves</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Precomputed nodes; evaluation cost</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Low</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Flexibility to scattered samples</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">High</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Medium (requires special nodes)</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">High</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
            </sec>
            <sec id="sec8">
                <title>3.5 Error bounds, conditioning, and practical recommendations</title>
                <p>Error decomposition. For smooth target f, the total quadrature error 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>E</mml:mi>
                            <mml:mo>=</mml:mo>
                            <mml:mrow>
                                <mml:mo>|</mml:mo>
                                <mml:mspace width="0.25em"/>
                                <mml:mi>I</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>f</mml:mi>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mo>&#x2212;</mml:mo>
                                <mml:msub>
                                    <mml:mi>I</mml:mi>
                                    <mml:mrow>
                                        <mml:mi>N</mml:mi>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">(</mml:mo>
                                            <mml:mi>f</mml:mi>
                                            <mml:mo stretchy="true">)</mml:mo>
                                        </mml:mrow>
                                    </mml:mrow>
                                </mml:msub>
                                <mml:mo>|</mml:mo>
                            </mml:mrow>
                        </mml:math>
</inline-formula> can be decomposed into approximation error and projection/quadrature extraction error:
                    <disp-formula id="e18">

                        <mml:math display="block">
                            <mml:mi>E</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2264;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:mrow>
                                <mml:mo>|</mml:mo>
                                <mml:mspace width="0.25em"/>
                                <mml:mi>I</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mi>f</mml:mi>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mo>&#x2212;</mml:mo>
                                <mml:mi>I</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mover accent="true">
                                        <mml:mi>p</mml:mi>
                                        <mml:mo stretchy="true">&#x0302;</mml:mo>
                                    </mml:mover>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mo>|</mml:mo>
                            </mml:mrow>
                            <mml:mo>+</mml:mo>
                            <mml:mrow>
                                <mml:mo>|</mml:mo>
                                <mml:mspace width="0.25em"/>
                                <mml:mi>I</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mover accent="true">
                                        <mml:mi>p</mml:mi>
                                        <mml:mo stretchy="true">&#x0302;</mml:mo>
                                    </mml:mover>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mo>&#x2212;</mml:mo>
                                <mml:mi>I</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mover accent="true">
                                        <mml:mi>p</mml:mi>
                                        <mml:mo stretchy="true">&#x0302;</mml:mo>
                                    </mml:mover>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mo>|</mml:mo>
                            </mml:mrow>
                            <mml:mo>+</mml:mo>
                            <mml:mrow>
                                <mml:mo>|</mml:mo>
                                <mml:mspace width="0.25em"/>
                                <mml:mi>I</mml:mi>
                                <mml:mrow>
                                    <mml:mo stretchy="true">(</mml:mo>
                                    <mml:mover accent="true">
                                        <mml:mi>p</mml:mi>
                                        <mml:mo stretchy="true">&#x0302;</mml:mo>
                                    </mml:mover>
                                    <mml:mo stretchy="true">)</mml:mo>
                                </mml:mrow>
                                <mml:mo>&#x2212;</mml:mo>
                                <mml:msub>
                                    <mml:mi>I</mml:mi>
                                    <mml:mrow>
                                        <mml:mi>N</mml:mi>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">(</mml:mo>
                                            <mml:mi>f</mml:mi>
                                            <mml:mo stretchy="true">)</mml:mo>
                                        </mml:mrow>
                                    </mml:mrow>
                                </mml:msub>
                                <mml:mo>|</mml:mo>
                            </mml:mrow>
                            <mml:mo>,</mml:mo>
                        </mml:math>

                        <label>(18)</label>
</disp-formula>where 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi>p</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                        </mml:math>
</inline-formula> is the best 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mi>L</mml:mi>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:math>
</inline-formula> or best-in-
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>&#x03a0;</mml:mi>
                                <mml:mi>L</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> approximation to f. The first term depends on smoothness and choice of L; the second term is controlled by stability of the WLS projector (norm of projector and condition number of G); the third term measures the algebraic extraction error (numerical linear algebra). Under MZ conditions and adequate oversampling N/D, the second and third terms are small and the overall error follows approximation-theory rates determined by smoothness of f and degree L.</p>
                <p>Conditioning and oversampling. A practical guideline is to choose N so that the oversampling factor r = N/D lies within a moderate range (typical values 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>r</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2248;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:mn>3</mml:mn>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:mn>10</mml:mn>
                        </mml:math>
</inline-formula>). Too small r leads to ill-conditioning and unstable &#x03bc;; very large r increases storage and computation but improves conditioning. If the condition number cond(G) is large, increase &#x03bb; modestly (e.g., 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>&#x03bb;</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mo>&#x2248;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mn>10</mml:mn>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:mn>6</mml:mn>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                            <mml:mo>&#x00d7;</mml:mo>
                            <mml:mtext mathvariant="italic">median eigenvalue of</mml:mtext>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mi>A</mml:mi>
                                <mml:mo>&#x2217;</mml:mo>
                            </mml:msup>
                            <mml:mi>W</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:mi>A</mml:mi>
                        </mml:math>
</inline-formula>), or increase oversampling.</p>
                <p>ADMM tuning and stopping. Choose penalty parameter &#x03c1; by a short pilot run; scaling &#x03c1; with median diagonal magnitude of local normal matrices is effective. Stop ADMM when both primal residual 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>r</mml:mi>
                                <mml:mi>p</mml:mi>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mo>max</mml:mo>
                                <mml:mi>m</mml:mi>
                            </mml:msub>
                            <mml:mspace width="0.25em"/>
                            <mml:mo stretchy="true">&#x2016;</mml:mo>
                            <mml:mspace width="0.25em"/>
                            <mml:msub>
                                <mml:mi>c</mml:mi>
                                <mml:mi>m</mml:mi>
                            </mml:msub>
                            <mml:mo>&#x2212;</mml:mo>
                            <mml:mi>z</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:msup>
                                    <mml:mo stretchy="true">&#x2016;</mml:mo>
                                    <mml:mn>2</mml:mn>
                                </mml:msup>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                            <mml:mn>2</mml:mn>
                        </mml:math>
</inline-formula> and dual residual 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>r</mml:mi>
                                <mml:mi>d</mml:mi>
                            </mml:msub>
                            <mml:mo>=</mml:mo>
                            <mml:mi>&#x03c1;</mml:mi>
                            <mml:mspace width="0.25em"/>
                            <mml:msup>
                                <mml:mrow>
                                    <mml:mo stretchy="true">&#x2016;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:msup>
                                        <mml:mi>z</mml:mi>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">{</mml:mo>
                                            <mml:mo stretchy="true">(</mml:mo>
                                            <mml:mi>t</mml:mi>
                                            <mml:mo stretchy="true">)</mml:mo>
                                            <mml:mo stretchy="true">}</mml:mo>
                                        </mml:mrow>
                                    </mml:msup>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:msup>
                                        <mml:mi>z</mml:mi>
                                        <mml:mrow>
                                            <mml:mo stretchy="true">{</mml:mo>
                                            <mml:mo stretchy="true">(</mml:mo>
                                            <mml:mi>t</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mn>1</mml:mn>
                                            <mml:mo stretchy="true">)</mml:mo>
                                            <mml:mo stretchy="true">}</mml:mo>
                                        </mml:mrow>
                                    </mml:msup>
                                    <mml:mo stretchy="true">&#x2016;</mml:mo>
                                </mml:mrow>
                                <mml:mn>2</mml:mn>
                            </mml:msup>
                        </mml:math>
</inline-formula> fall below tolerances (e.g., 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msup>
                                <mml:mn>10</mml:mn>
                                <mml:mrow>
                                    <mml:mo stretchy="true">{</mml:mo>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:mn>6</mml:mn>
                                    <mml:mo stretchy="true">}</mml:mo>
                                </mml:mrow>
                            </mml:msup>
                        </mml:math>
</inline-formula> times typical coefficient magnitude). Pre-factorize local 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>D</mml:mi>
                            <mml:mo>&#x00d7;</mml:mo>
                            <mml:mi>D</mml:mi>
                        </mml:math>
</inline-formula> matrices to reduce per-iteration cost; warm-start local solves with previous 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:msub>
                                <mml:mi>c</mml:mi>
                                <mml:mi>m</mml:mi>
                            </mml:msub>
                        </mml:math>
</inline-formula> accelerates convergence.</p>
            </sec>
            <sec id="sec9">
                <title>3.6 Suggested experiments and diagnostics</title>
                <p>For an experimental study that validates the method across node geometries and problem sizes, the following experiments are informative (described in narrative rather than enumerated bullets here).</p>
                <p>Begin with synthetic tests on canonical functions: a smooth spherical Gaussian f(x) = 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mo mathvariant="italic">exp</mml:mo>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mi>&#x03b1;</mml:mi>
                                <mml:mspace width="0.25em"/>
                                <mml:mi>x</mml:mi>
                                <mml:mo>&#x00b7;</mml:mo>
                                <mml:mi>v</mml:mi>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                        </mml:math>
</inline-formula> to probe spectral convergence; Legendre modes 
                    <inline-formula>

                        <mml:math display="inline">
                            <mml:mi>f</mml:mi>
                            <mml:mrow>
                                <mml:mo stretchy="true">(</mml:mo>
                                <mml:mi>&#x03b8;</mml:mi>
                                <mml:mo>,</mml:mo>
                                <mml:mi>&#x03c6;</mml:mi>
                                <mml:mo stretchy="true">)</mml:mo>
                            </mml:mrow>
                            <mml:mo>=</mml:mo>
                            <mml:msub>
                                <mml:mi>P</mml:mi>
                                <mml:mrow>
                                    <mml:mi>L</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mo>cos</mml:mo>
                                        <mml:mi>&#x03b8;</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                </mml:mrow>
                            </mml:msub>
                        </mml:math>
</inline-formula> to test polynomial exactness; a C^k function to examine algebraic rates; and a spherical-cap indicator to stress Gibbs behavior and measure localized errors. For each function and each node family (spherical designs, Gauss&#x2013;Legendre, HEALPix, Fibonacci, minimum-energy, clustered, uniform random) measure approximation L^2 error, pointwise max-norm error in regions of interest, quadrature absolute error, and the distribution (histogram and spatial map) of &#x03bc;. Report conditioning numbers of G, oversampling factors N/D, and ADMM iteration counts and communication volumes for distributed experiments.</p>
                <p>Diagnostic plots that are particularly revealing include convergence of error versus L for fixed N, error versus N for fixed L, spatial maps of &#x03bc; (to detect negative or large-magnitude weights), and ADMM primal/dual residual histories. These diagnostics directly reveal whether failures are due to insufficient sampling density, poor node geometry, or numerical instability.</p>
            </sec>
        </sec>
        <sec id="sec10" sec-type="results">
            <title>4. Results</title>
            <p>This section presents comprehensive theoretical guarantees and experimental validation of the proposed consensus-based weighted least squares framework. We first establish mathematical foundations through three key theorems addressing stability, approximation error, and quadrature properties. Subsequently, we document an extensive experimental program validating these theoretical predictions across diverse node distributions, function classes, and computational scales.</p>
            <sec id="sec11">
                <title>4.1 Theoretical results</title>
                <p>

                    <statement id="state1">
                        <label>Theorem 1</label>
                        <p>(Stability &#x2014; Spectral Bounds on the Weighted Normal Matrix)</p>
                        <p>

                            <italic toggle="yes">Statement.</italic> Suppose the sampling pair 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:msub>
                                            <mml:mi>X</mml:mi>
                                            <mml:mi>N</mml:mi>
                                        </mml:msub>
                                        <mml:mo>,</mml:mo>
                                        <mml:mo stretchy="true">{</mml:mo>
                                        <mml:msub>
                                            <mml:mi>w</mml:mi>
                                            <mml:mi>i</mml:mi>
                                        </mml:msub>
                                        <mml:mo stretchy="true">}</mml:mo>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                </mml:math>
</inline-formula> satisfies a Marcinkiewicz&#x2013;Zygmund (MZ) inequality for 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:msub>
                                        <mml:mi mathvariant="normal">&#x03a0;</mml:mi>
                                        <mml:mi>L</mml:mi>
                                    </mml:msub>
                                </mml:math>
</inline-formula> with constants 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:msub>
                                        <mml:mi>A</mml:mi>
                                        <mml:mn>0</mml:mn>
                                    </mml:msub>
                                    <mml:mo>,</mml:mo>
                                    <mml:msub>
                                        <mml:mi>B</mml:mi>
                                        <mml:mn>0</mml:mn>
                                    </mml:msub>
                                    <mml:mo>&gt;</mml:mo>
                                    <mml:mn>0</mml:mn>
                                </mml:math>
</inline-formula>, i.e., for every 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:mi>p</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo>&#x2208;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:msub>
                                        <mml:mi mathvariant="normal">&#x03a0;</mml:mi>
                                        <mml:mi>L</mml:mi>
                                    </mml:msub>
                                </mml:math>
</inline-formula>:
                            <disp-formula id="e19">

                                <mml:math display="block">
                                    <mml:msub>
                                        <mml:mi>A</mml:mi>
                                        <mml:mn>0</mml:mn>
                                    </mml:msub>
                                    <mml:mo>&#x2225;</mml:mo>
                                    <mml:mi>p</mml:mi>
                                    <mml:msubsup>
                                        <mml:mo>&#x2225;</mml:mo>
                                        <mml:mrow>
                                            <mml:msup>
                                                <mml:mi>L</mml:mi>
                                                <mml:mn>2</mml:mn>
                                            </mml:msup>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:msup>
                                                    <mml:mi mathvariant="double-struck">S</mml:mi>
                                                    <mml:mn>2</mml:mn>
                                                </mml:msup>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:mrow>
                                        <mml:mn>2</mml:mn>
                                    </mml:msubsup>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo>&#x2264;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:munderover>
                                        <mml:mo>&#x2211;</mml:mo>
                                        <mml:mrow>
                                            <mml:mi>i</mml:mi>
                                            <mml:mo>=</mml:mo>
                                            <mml:mn>1</mml:mn>
                                        </mml:mrow>
                                        <mml:mi>N</mml:mi>
                                    </mml:munderover>
                                    <mml:msub>
                                        <mml:mi>w</mml:mi>
                                        <mml:mi>i</mml:mi>
                                    </mml:msub>
                                    <mml:msup>
                                        <mml:mrow>
                                            <mml:mo>|</mml:mo>
                                            <mml:mi>p</mml:mi>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:msub>
                                                    <mml:mi mathvariant="bold">x</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>|</mml:mo>
                                        </mml:mrow>
                                        <mml:mn>2</mml:mn>
                                    </mml:msup>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo>&#x2264;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:msub>
                                        <mml:mi>B</mml:mi>
                                        <mml:mn>0</mml:mn>
                                    </mml:msub>
                                    <mml:mo>&#x2225;</mml:mo>
                                    <mml:mi>p</mml:mi>
                                    <mml:msubsup>
                                        <mml:mo>&#x2225;</mml:mo>
                                        <mml:mrow>
                                            <mml:msup>
                                                <mml:mi>L</mml:mi>
                                                <mml:mn>2</mml:mn>
                                            </mml:msup>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:msup>
                                                    <mml:mi mathvariant="double-struck">S</mml:mi>
                                                    <mml:mn>2</mml:mn>
                                                </mml:msup>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:mrow>
                                        <mml:mn>2</mml:mn>
                                    </mml:msubsup>
                                    <mml:mo>.</mml:mo>
                                </mml:math>
</disp-formula>
                        </p>
                        <p>Let 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:mi mathvariant="bold">G</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:msup>
                                        <mml:mi mathvariant="bold">A</mml:mi>
                                        <mml:mo>&#x2217;</mml:mo>
                                    </mml:msup>
                                    <mml:mi mathvariant="bold">WA</mml:mi>
                                </mml:math>
</inline-formula> be the weighted normal matrix. Then the eigenvalues 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:msub>
                                        <mml:mi>&#x03bb;</mml:mi>
                                        <mml:mi>j</mml:mi>
                                    </mml:msub>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi mathvariant="bold">G</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                </mml:math>
</inline-formula> satisfy:
                            <disp-formula id="e20">

                                <mml:math display="block">
                                    <mml:msub>
                                        <mml:mi>A</mml:mi>
                                        <mml:mn>0</mml:mn>
                                    </mml:msub>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo>&#x2264;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:msub>
                                        <mml:mi>&#x03bb;</mml:mi>
                                        <mml:mi>j</mml:mi>
                                    </mml:msub>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi mathvariant="bold">G</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo>&#x2264;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:msub>
                                        <mml:mi>B</mml:mi>
                                        <mml:mn>0</mml:mn>
                                    </mml:msub>
                                    <mml:mspace width="1em"/>
                                    <mml:mtext>for</mml:mtext>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mi>all</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mi>j</mml:mi>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>1</mml:mn>
                                    <mml:mo>,</mml:mo>
                                    <mml:mo>&#x2026;</mml:mo>
                                    <mml:mo>,</mml:mo>
                                    <mml:mi>D</mml:mi>
                                    <mml:mo>,</mml:mo>
                                </mml:math>
</disp-formula>and consequently:
                            <disp-formula id="e21">

                                <mml:math display="block">
                                    <mml:mtext>cond</mml:mtext>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi mathvariant="bold">G</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo>&#x2264;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mfrac>
                                        <mml:msub>
                                            <mml:mi>B</mml:mi>
                                            <mml:mn>0</mml:mn>
                                        </mml:msub>
                                        <mml:msub>
                                            <mml:mi>A</mml:mi>
                                            <mml:mn>0</mml:mn>
                                        </mml:msub>
                                    </mml:mfrac>
                                    <mml:mo>.</mml:mo>
                                </mml:math>
</disp-formula>
                        </p>
                        <p>

                            <italic toggle="yes">Proof.</italic> Let 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:mi mathvariant="bold">c</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo>&#x2208;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:msup>
                                        <mml:mi>&#x2102;</mml:mi>
                                        <mml:mi>D</mml:mi>
                                    </mml:msup>
                                </mml:math>
</inline-formula> be the coefficient vector for 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:mi>p</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo>&#x2208;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:msub>
                                        <mml:mi mathvariant="normal">&#x03a0;</mml:mi>
                                        <mml:mi>L</mml:mi>
                                    </mml:msub>
                                </mml:math>
</inline-formula>. The Rayleigh quotient gives:
                            <disp-formula id="e22">

                                <mml:math display="block">
                                    <mml:mfrac>
                                        <mml:mrow>
                                            <mml:msup>
                                                <mml:mi mathvariant="bold">c</mml:mi>
                                                <mml:mo>&#x2217;</mml:mo>
                                            </mml:msup>
                                            <mml:mi mathvariant="bold">Gc</mml:mi>
                                        </mml:mrow>
                                        <mml:mrow>
                                            <mml:msup>
                                                <mml:mi mathvariant="bold">c</mml:mi>
                                                <mml:mo>&#x2217;</mml:mo>
                                            </mml:msup>
                                            <mml:mi mathvariant="bold">c</mml:mi>
                                        </mml:mrow>
                                    </mml:mfrac>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo>=</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mfrac>
                                        <mml:mrow>
                                            <mml:munderover>
                                                <mml:mo>&#x2211;</mml:mo>
                                                <mml:mrow>
                                                    <mml:mi>i</mml:mi>
                                                    <mml:mo>=</mml:mo>
                                                    <mml:mn>1</mml:mn>
                                                </mml:mrow>
                                                <mml:mi>N</mml:mi>
                                            </mml:munderover>
                                            <mml:msub>
                                                <mml:mi>w</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                            <mml:msup>
                                                <mml:mrow>
                                                    <mml:mo>|</mml:mo>
                                                    <mml:mi>p</mml:mi>
                                                    <mml:mrow>
                                                        <mml:mo stretchy="true">(</mml:mo>
                                                        <mml:msub>
                                                            <mml:mi mathvariant="bold">x</mml:mi>
                                                            <mml:mi>i</mml:mi>
                                                        </mml:msub>
                                                        <mml:mo stretchy="true">)</mml:mo>
                                                    </mml:mrow>
                                                    <mml:mo>|</mml:mo>
                                                </mml:mrow>
                                                <mml:mn>2</mml:mn>
                                            </mml:msup>
                                        </mml:mrow>
                                        <mml:mrow>
                                            <mml:mo>&#x2225;</mml:mo>
                                            <mml:mi>p</mml:mi>
                                            <mml:msubsup>
                                                <mml:mo>&#x2225;</mml:mo>
                                                <mml:msup>
                                                    <mml:mi>L</mml:mi>
                                                    <mml:mn>2</mml:mn>
                                                </mml:msup>
                                                <mml:mn>2</mml:mn>
                                            </mml:msubsup>
                                        </mml:mrow>
                                    </mml:mfrac>
                                    <mml:mo>.</mml:mo>
                                </mml:math>
</disp-formula>
                        </p>
                        <p>The MZ inequality bounds this quotient between 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:msub>
                                        <mml:mi>A</mml:mi>
                                        <mml:mn>0</mml:mn>
                                    </mml:msub>
                                </mml:math>
</inline-formula> and 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:msub>
                                        <mml:mi>B</mml:mi>
                                        <mml:mn>0</mml:mn>
                                    </mml:msub>
                                </mml:math>
</inline-formula>, proving the spectral bounds. The condition number bound follows immediately.</p>
                        <p>

                            <italic toggle="yes">Interpretation.</italic> This theorem establishes that Voronoi-weighted discretization preserves spectral equivalence with the continuous inner product, ensuring numerical stability independent of specific node arrangements as shown in 
                            <xref ref-type="table" rid="T5">
Table 5</xref>.</p>
                    </statement>

                    <statement id="state2">
                        <label>Theorem 2</label>
                        <p>(Approximation Error Bound)</p>
                        <p>

                            <italic toggle="yes">Statement.</italic> Let 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:mi>f</mml:mi>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo>&#x2208;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:msup>
                                        <mml:mi>L</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:msup>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:msup>
                                            <mml:mi mathvariant="double-struck">S</mml:mi>
                                            <mml:mn>2</mml:mn>
                                        </mml:msup>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                </mml:math>
</inline-formula> and 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:msub>
                                        <mml:mi>P</mml:mi>
                                        <mml:mi>L</mml:mi>
                                    </mml:msub>
                                    <mml:mi>f</mml:mi>
                                </mml:math>
</inline-formula> be the WLS approximation. Suppose observed samples contain noise 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:mi>&#x03b7;</mml:mi>
                                </mml:math>
</inline-formula> with 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:mo>&#x2225;</mml:mo>
                                    <mml:mi>&#x03b7;</mml:mi>
                                    <mml:msubsup>
                                        <mml:mo>&#x2225;</mml:mo>
                                        <mml:msup>
                                            <mml:mi mathvariant="bold">W</mml:mi>
                                            <mml:mrow>
                                                <mml:mo>&#x2212;</mml:mo>
                                                <mml:mn>1</mml:mn>
                                            </mml:mrow>
                                        </mml:msup>
                                        <mml:mn>2</mml:mn>
                                    </mml:msubsup>
                                    <mml:mo>=</mml:mo>
                                    <mml:msup>
                                        <mml:mi>&#x03b7;</mml:mi>
                                        <mml:mo>&#x2217;</mml:mo>
                                    </mml:msup>
                                    <mml:msup>
                                        <mml:mi mathvariant="bold">W</mml:mi>
                                        <mml:mrow>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mn>1</mml:mn>
                                        </mml:mrow>
                                    </mml:msup>
                                    <mml:mi>&#x03b7;</mml:mi>
                                </mml:math>
</inline-formula>. Then:
                            <disp-formula id="e23">

                                <mml:math display="block">
                                    <mml:mo>&#x2225;</mml:mo>
                                    <mml:mi>f</mml:mi>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:msub>
                                        <mml:mi>P</mml:mi>
                                        <mml:mi>L</mml:mi>
                                    </mml:msub>
                                    <mml:mi>f</mml:mi>
                                    <mml:msub>
                                        <mml:mo>&#x2225;</mml:mo>
                                        <mml:msup>
                                            <mml:mi>L</mml:mi>
                                            <mml:mn>2</mml:mn>
                                        </mml:msup>
                                    </mml:msub>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo>&#x2264;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:msub>
                                        <mml:mi>C</mml:mi>
                                        <mml:mn>1</mml:mn>
                                    </mml:msub>
                                    <mml:msub>
                                        <mml:mi>E</mml:mi>
                                        <mml:mi>L</mml:mi>
                                    </mml:msub>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>f</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                    <mml:mo>+</mml:mo>
                                    <mml:msub>
                                        <mml:mi>C</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:msub>
                                    <mml:mo>&#x22c5;</mml:mo>
                                    <mml:mtext>cond</mml:mtext>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi mathvariant="bold">G</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                    <mml:mo>&#x22c5;</mml:mo>
                                    <mml:mo>&#x2225;</mml:mo>
                                    <mml:mi>&#x03b7;</mml:mi>
                                    <mml:msub>
                                        <mml:mo>&#x2225;</mml:mo>
                                        <mml:msup>
                                            <mml:mi mathvariant="bold">W</mml:mi>
                                            <mml:mrow>
                                                <mml:mo>&#x2212;</mml:mo>
                                                <mml:mn>1</mml:mn>
                                            </mml:mrow>
                                        </mml:msup>
                                    </mml:msub>
                                    <mml:mo>,</mml:mo>
                                </mml:math>
</disp-formula>
                        </p>
                        <p>where 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:msub>
                                        <mml:mi>C</mml:mi>
                                        <mml:mn>1</mml:mn>
                                    </mml:msub>
                                    <mml:mo>,</mml:mo>
                                    <mml:msub>
                                        <mml:mi>C</mml:mi>
                                        <mml:mn>2</mml:mn>
                                    </mml:msub>
                                </mml:math>
</inline-formula> depend only on 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:msub>
                                        <mml:mi>A</mml:mi>
                                        <mml:mn>0</mml:mn>
                                    </mml:msub>
                                    <mml:mo>,</mml:mo>
                                    <mml:msub>
                                        <mml:mi>B</mml:mi>
                                        <mml:mn>0</mml:mn>
                                    </mml:msub>
                                </mml:math>
</inline-formula>.</p>
                        <p>

                            <italic toggle="yes">Proof Sketch.</italic> Decompose error into approximation and noise terms:
                            <disp-formula id="e24">

                                <mml:math display="block">
                                    <mml:mo>&#x2225;</mml:mo>
                                    <mml:mi>f</mml:mi>
                                    <mml:mo>&#x2212;</mml:mo>
                                    <mml:msub>
                                        <mml:mi>P</mml:mi>
                                        <mml:mi>L</mml:mi>
                                    </mml:msub>
                                    <mml:mi>f</mml:mi>
                                    <mml:msub>
                                        <mml:mo>&#x2225;</mml:mo>
                                        <mml:msup>
                                            <mml:mi>L</mml:mi>
                                            <mml:mn>2</mml:mn>
                                        </mml:msup>
                                    </mml:msub>
                                    <mml:mspace width="0.25em"/>
                                    <mml:mo>&#x2264;</mml:mo>
                                    <mml:mspace width="0.25em"/>
                                    <mml:munder>
                                        <mml:munder>
                                            <mml:mrow>
                                                <mml:mo>&#x2225;</mml:mo>
                                                <mml:mi>f</mml:mi>
                                                <mml:mo>&#x2212;</mml:mo>
                                                <mml:msup>
                                                    <mml:mi>p</mml:mi>
                                                    <mml:mo>&#x2217;</mml:mo>
                                                </mml:msup>
                                                <mml:msub>
                                                    <mml:mo>&#x2225;</mml:mo>
                                                    <mml:msup>
                                                        <mml:mi>L</mml:mi>
                                                        <mml:mn>2</mml:mn>
                                                    </mml:msup>
                                                </mml:msub>
                                            </mml:mrow>
                                            <mml:mo>&#x23df;</mml:mo>
                                        </mml:munder>
                                        <mml:mtext>Approximation</mml:mtext>
                                    </mml:munder>
                                    <mml:mo>+</mml:mo>
                                    <mml:munder>
                                        <mml:munder>
                                            <mml:mrow>
                                                <mml:mo>&#x2225;</mml:mo>
                                                <mml:msup>
                                                    <mml:mi>p</mml:mi>
                                                    <mml:mo>&#x2217;</mml:mo>
                                                </mml:msup>
                                                <mml:mo>&#x2212;</mml:mo>
                                                <mml:msub>
                                                    <mml:mi>P</mml:mi>
                                                    <mml:mi>L</mml:mi>
                                                </mml:msub>
                                                <mml:mi>f</mml:mi>
                                                <mml:msub>
                                                    <mml:mo>&#x2225;</mml:mo>
                                                    <mml:msup>
                                                        <mml:mi>L</mml:mi>
                                                        <mml:mn>2</mml:mn>
                                                    </mml:msup>
                                                </mml:msub>
                                            </mml:mrow>
                                            <mml:mo>&#x23df;</mml:mo>
                                        </mml:munder>
                                        <mml:mtext>Propagated Noise</mml:mtext>
                                    </mml:munder>
                                    <mml:mo>.</mml:mo>
                                </mml:math>
</disp-formula>
                        </p>
                        <p>The first term equals 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:msub>
                                        <mml:mi>E</mml:mi>
                                        <mml:mi>L</mml:mi>
                                    </mml:msub>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>f</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                </mml:math>
</inline-formula>. The second term is bounded using the MZ-condition and noise magnitude, yielding the stated bound. &#x25a1;</p>
                    </statement>

                    <statement id="state3">
                        <label>Theorem 3</label>
                        <p>(Quadrature Positivity and Conservation)</p>
                        <p>

                            <italic toggle="yes">Statement.</italic> Under the MZ condition with 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:munder>
                                        <mml:mo>&#x2211;</mml:mo>
                                        <mml:mi>i</mml:mi>
                                    </mml:munder>
                                    <mml:msub>
                                        <mml:mi>w</mml:mi>
                                        <mml:mi>i</mml:mi>
                                    </mml:msub>
                                    <mml:mo>=</mml:mo>
                                    <mml:mn>4</mml:mn>
                                    <mml:mi>&#x03c0;</mml:mi>
                                </mml:math>
</inline-formula>, the WLS-derived quadrature weights 
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:msub>
                                        <mml:mi>&#x03bc;</mml:mi>
                                        <mml:mi>i</mml:mi>
                                    </mml:msub>
                                </mml:math>
</inline-formula> satisfy:
                            <list list-type="order">
                                <list-item>
                                    <label>1.</label>
                                    <p>Mass conservation: 
                                        <inline-formula>

                                            <mml:math display="inline">
                                                <mml:munderover>
                                                    <mml:mo>&#x2211;</mml:mo>
                                                    <mml:mrow>
                                                        <mml:mi>i</mml:mi>
                                                        <mml:mo>=</mml:mo>
                                                        <mml:mn>1</mml:mn>
                                                    </mml:mrow>
                                                    <mml:mi>N</mml:mi>
                                                </mml:munderover>
                                                <mml:msub>
                                                    <mml:mi>&#x03bc;</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                                <mml:mo>=</mml:mo>
                                                <mml:mn>4</mml:mn>
                                                <mml:mi>&#x03c0;</mml:mi>
                                            </mml:math>
</inline-formula>
                                    </p>
                                </list-item>
                                <list-item>
                                    <label>2.</label>
                                    <p>Non-negativity: 
                                        <inline-formula>

                                            <mml:math display="inline">
                                                <mml:msub>
                                                    <mml:mi>&#x03bc;</mml:mi>
                                                    <mml:mi>i</mml:mi>
                                                </mml:msub>
                                                <mml:mspace width="0.25em"/>
                                                <mml:mo>&#x2265;</mml:mo>
                                                <mml:mspace width="0.25em"/>
                                                <mml:mn>0</mml:mn>
                                            </mml:math>
</inline-formula> for all 
                                        <inline-formula>

                                            <mml:math display="inline">
                                                <mml:mi>i</mml:mi>
                                            </mml:math>
</inline-formula> under sufficient sampling density</p>
                                </list-item>
                            </list>
                        </p>
                        <p>

                            <italic toggle="yes">Proof Outline.</italic> Conservation follows from exact integration of constants. Positivity derives from the duality between positive linear functionals and nonnegative measures, ensured by the MZ condition.</p>
                    </statement>
                </p>
                <table-wrap id="T5" orientation="portrait" position="float">
                    <label>
Table 5. </label>
                    <caption>
                        <title>Theoretical constants and their interpretation in polynomial approximation.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">Constant</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Mathematical expression</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Practical significance</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Typical range</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>A</mml:mi>
                                                <mml:mn>0</mml:mn>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Lower MZ constant</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Measures sampling adequacy</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>0</mml:mn>
                                            <mml:mo>&lt;</mml:mo>
                                            <mml:msub>
                                                <mml:mi>A</mml:mi>
                                                <mml:mn>0</mml:mn>
                                            </mml:msub>
                                            <mml:mspace width="0.25em"/>
                                            <mml:mo>&#x2264;</mml:mo>
                                            <mml:mspace width="0.25em"/>
                                            <mml:mn>1</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>B</mml:mi>
                                                <mml:mn>0</mml:mn>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Upper MZ constant</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Controls oversampling effects</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>1</mml:mn>
                                            <mml:mspace width="0.25em"/>
                                            <mml:mo>&#x2264;</mml:mo>
                                            <mml:mspace width="0.25em"/>
                                            <mml:msub>
                                                <mml:mi>B</mml:mi>
                                                <mml:mn>0</mml:mn>
                                            </mml:msub>
                                            <mml:mo>&lt;</mml:mo>
                                            <mml:mo>&#x221e;</mml:mo>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mtext>cond</mml:mtext>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mi mathvariant="bold">G</mml:mi>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>&#x03bb;</mml:mi>
                                                <mml:mi>max</mml:mi>
                                            </mml:msub>
                                            <mml:mo>/</mml:mo>
                                            <mml:msub>
                                                <mml:mi>&#x03bb;</mml:mi>
                                                <mml:mi>min</mml:mi>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Numerical stability indicator</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>1</mml:mn>
                                            <mml:mspace width="0.25em"/>
                                            <mml:mo>&#x2264;</mml:mo>
                                            <mml:mspace width="0.25em"/>
                                            <mml:mtext>cond</mml:mtext>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mi mathvariant="bold">G</mml:mi>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mspace width="0.25em"/>
                                            <mml:mo>&#x2264;</mml:mo>
                                            <mml:mspace width="0.25em"/>
                                            <mml:msub>
                                                <mml:mi>B</mml:mi>
                                                <mml:mn>0</mml:mn>
                                            </mml:msub>
                                            <mml:mo>/</mml:mo>
                                            <mml:msub>
                                                <mml:mi>A</mml:mi>
                                                <mml:mn>0</mml:mn>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>E</mml:mi>
                                                <mml:mi>L</mml:mi>
                                            </mml:msub>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mi>f</mml:mi>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mo>inf</mml:mo>
                                                <mml:mrow>
                                                    <mml:mi>p</mml:mi>
                                                    <mml:mo>&#x2208;</mml:mo>
                                                    <mml:msub>
                                                        <mml:mi mathvariant="normal">&#x03a0;</mml:mi>
                                                        <mml:mi>L</mml:mi>
                                                    </mml:msub>
                                                </mml:mrow>
                                            </mml:msub>
                                            <mml:mo>&#x2225;</mml:mo>
                                            <mml:mi>f</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mi>p</mml:mi>
                                            <mml:msub>
                                                <mml:mo>&#x2225;</mml:mo>
                                                <mml:msup>
                                                    <mml:mi>L</mml:mi>
                                                    <mml:mn>2</mml:mn>
                                                </mml:msup>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Best approximation error</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Decreases with 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>L</mml:mi>
                                        </mml:math>
</inline-formula> for smooth 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>f</mml:mi>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
            </sec>
            <sec id="sec12">
                <title>4.2 Numerical experiments</title>
                <p>We implemented the complete framework in Python, utilizing spherical Voronoi tessellation for weight computation and ADMM with distributed optimization. Our experimental design encompasses multiple node families and function classes to thoroughly validate theoretical predictions as shown in 
                    <xref ref-type="table" rid="T6">
Table 6</xref>.</p>
                <table-wrap id="T6" orientation="portrait" position="float">
                    <label>
Table 6. </label>
                    <caption>
                        <title>Experimental configurations for comprehensive validation.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Node family</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Cardinality 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>N</mml:mi>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Polynomial degrees 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>L</mml:mi>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Test functions</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Primary evaluation metric</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Fibonacci</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">256, 1024, 4096</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">4, 8, 12, 16</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">F1 (smooth), F5 (discontinuous)</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Approximation error 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mo>&#x2225;</mml:mo>
                                            <mml:mi>f</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:msub>
                                                <mml:mi>P</mml:mi>
                                                <mml:mi>L</mml:mi>
                                            </mml:msub>
                                            <mml:mi>f</mml:mi>
                                            <mml:msub>
                                                <mml:mo>&#x2225;</mml:mo>
                                                <mml:msup>
                                                    <mml:mi>L</mml:mi>
                                                    <mml:mn>2</mml:mn>
                                                </mml:msup>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Random Uniform</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">256, 1024, 4096</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">4, 8, 12</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">F1, F2, F4, F5</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Quadrature error $</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Clustered</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1024, 4096</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">4, 8, 12</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">F1, F5</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Condition number 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mtext>cond</mml:mtext>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mi mathvariant="bold">G</mml:mi>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Minimum Energy</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">256, 1024</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">4, 8, 12, 16</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">F1, F2, F4</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Weight positivity statistics</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
                <p>

                    <bold>Experiment 1: Approximation Accuracy Across Node Families (see</bold> 
                    <xref ref-type="table" rid="T7">
Table 7</xref>
                    <bold>)</bold>
                </p>
                <table-wrap id="T7" orientation="portrait" position="float">
                    <label>
Table 7. </label>
                    <caption>
                        <title>Approximation performance for smooth function F1 (
                            <inline-formula>

                                <mml:math display="inline">
                                    <mml:mi>f</mml:mi>
                                    <mml:mrow>
                                        <mml:mo stretchy="true">(</mml:mo>
                                        <mml:mi>&#x03b8;</mml:mi>
                                        <mml:mo>,</mml:mo>
                                        <mml:mi>&#x03c6;</mml:mi>
                                        <mml:mo stretchy="true">)</mml:mo>
                                    </mml:mrow>
                                    <mml:mo>=</mml:mo>
                                    <mml:msup>
                                        <mml:mi>e</mml:mi>
                                        <mml:mrow>
                                            <mml:mo>cos</mml:mo>
                                            <mml:mi>&#x03b8;</mml:mi>
                                        </mml:mrow>
                                    </mml:msup>
                                </mml:math>
</inline-formula>).</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">Node family</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>N</mml:mi>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>L</mml:mi>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mtext>cond</mml:mtext>
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mi mathvariant="normal">G</mml:mi>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mo>&#x2225;</mml:mo>
                                            <mml:mi>f</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:msub>
                                                <mml:mi>P</mml:mi>
                                                <mml:mi>L</mml:mi>
                                            </mml:msub>
                                            <mml:mi>f</mml:mi>
                                            <mml:msub>
                                                <mml:mo>&#x2225;</mml:mo>
                                                <mml:msup>
                                                    <mml:mi>L</mml:mi>
                                                    <mml:mn>2</mml:mn>
                                                </mml:msup>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mo>&#x2225;</mml:mo>
                                            <mml:mi>f</mml:mi>
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:msub>
                                                <mml:mi>P</mml:mi>
                                                <mml:mi>L</mml:mi>
                                            </mml:msub>
                                            <mml:mi>f</mml:mi>
                                            <mml:msub>
                                                <mml:mo>&#x2225;</mml:mo>
                                                <mml:msup>
                                                    <mml:mi>L</mml:mi>
                                                    <mml:mo>&#x221e;</mml:mo>
                                                </mml:msup>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Convergence rate</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Fibonacci</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1024</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">8</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>2.17</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>0.03</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mn>3.28</mml:mn>
                                                <mml:mo>&#x00b1;</mml:mo>
                                                <mml:mn>0.12</mml:mn>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>5</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mn>7.45</mml:mn>
                                                <mml:mo>&#x00b1;</mml:mo>
                                                <mml:mn>0.31</mml:mn>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>4</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Spectral</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Random Uniform</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1024</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">8</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>15.43</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>2.17</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mn>1.26</mml:mn>
                                                <mml:mo>&#x00b1;</mml:mo>
                                                <mml:mn>0.21</mml:mn>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>4</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mn>3.28</mml:mn>
                                                <mml:mo>&#x00b1;</mml:mo>
                                                <mml:mn>0.52</mml:mn>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>3</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Spectral</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Clustered</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1024</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">8</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>128.75</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>15.62</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mn>8.92</mml:mn>
                                                <mml:mo>&#x00b1;</mml:mo>
                                                <mml:mn>1.34</mml:mn>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>4</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mn>2.15</mml:mn>
                                                <mml:mo>&#x00b1;</mml:mo>
                                                <mml:mn>0.28</mml:mn>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>2</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Algebraic</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Minimum Energy</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">256</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">8</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>1.89</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>0.02</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mn>4.12</mml:mn>
                                                <mml:mo>&#x00b1;</mml:mo>
                                                <mml:mn>0.09</mml:mn>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>5</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mn>9.03</mml:mn>
                                                <mml:mo>&#x00b1;</mml:mo>
                                                <mml:mn>0.22</mml:mn>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>4</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Spectral</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
                <p>The Voronoi-weighted approach maintains excellent conditioning even for challenging node distributions, with Fibonacci and Minimum Energy points achieving near-optimal conditioning. Spectral convergence is observed for uniform distributions, while clustered nodes exhibit algebraic convergence due to localized oversampling as shown in 
                    <xref ref-type="fig" rid="f2">
Figure 2</xref>.</p>
                <fig fig-type="figure" id="f2" orientation="portrait" position="float">
                    <label>
Figure 2. </label>
                    <caption>
                        <title>Approximation error versus polynomial degree for different node families.</title>
                        <p>This figure plots the convergence rate of the approximation method by showing the root mean square error (RMSE) as a function of the polynomial degree (
                            <italic toggle="yes">N</italic>). Different curves represent various node placement strategies (e.g., uniformly spaced, Chebyshev, or clustered nodes). The plot demonstrates the phenomenon of spectral convergence for well-behaved node families, where the error drops exponentially after a critical degree, in contrast to the slower algebraic convergence observed for suboptimal node sets.</p>
                    </caption>
                    <graphic id="gr2" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/191535/1e09f029-6103-403f-a6b9-e4cec9532d39_figure2.gif"/>
                </fig>
                <p>

                    <bold>Experiment 2: Quadrature Accuracy (see</bold> 
                    <xref ref-type="table" rid="T8">
Table 8</xref>
                    <bold>)</bold>
                </p>
                <table-wrap id="T8" orientation="portrait" position="float">
                    <label>
Table 8. </label>
                    <caption>
                        <title>Quadrature error comparison for test function F2 (Legendre mode of degree 6).</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">Method</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>N</mml:mi>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>L</mml:mi>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Absolute error</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Relative error</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Exactness verification</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">WLS-derived
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1024</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">8</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mn>2.18</mml:mn>
                                                <mml:mo>&#x00b1;</mml:mo>
                                                <mml:mn>0.04</mml:mn>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>14</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mn>8.92</mml:mn>
                                                <mml:mo>&#x00b1;</mml:mo>
                                                <mml:mn>0.17</mml:mn>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>14</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Exact up to degree 8</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Voronoi-area
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1024</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">-</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>0.127</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>0.008</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>0.519</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>0.033</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Degree 0 only</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Monte Carlo</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1024</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">-</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>0.892</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>0.124</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>3.648</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>0.507</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Statistical</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Spherical Design</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1024</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">12</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mn>1.02</mml:mn>
                                                <mml:mo>&#x00b1;</mml:mo>
                                                <mml:mn>0.03</mml:mn>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>15</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mrow>
                                                <mml:mo stretchy="true">(</mml:mo>
                                                <mml:mn>4.17</mml:mn>
                                                <mml:mo>&#x00b1;</mml:mo>
                                                <mml:mn>0.12</mml:mn>
                                                <mml:mo stretchy="true">)</mml:mo>
                                            </mml:mrow>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>15</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Exact up to degree 12</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
                <p>The WLS-derived quadrature achieves machine-precision accuracy for polynomials within its exactness degree, significantly outperforming area-based and Monte Carlo approaches. While spherical designs provide slightly better accuracy for comparable degrees, our method offers flexibility for arbitrary node distributions as shown in 
                    <xref ref-type="fig" rid="f3">
Figure 3</xref>.</p>
                <fig fig-type="figure" id="f3" orientation="portrait" position="float">
                    <label>
Figure 3. </label>
                    <caption>
                        <title>Quadrature error versus number of nodes for smooth function F1.</title>
                        <p>The graph evaluates the accuracy of the numerical integration (quadrature) technique. The 
                            <italic toggle="yes">y</italic>-axis shows the absolute error between the numerical approximation and the exact integral of a smooth target function (
                            <italic toggle="yes">F1</italic>). The 
                            <italic toggle="yes">x</italic>-axis shows the number of integration points (nodes), 
                            <italic toggle="yes">M.</italic>
                        </p>
                    </caption>
                    <graphic id="gr3" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/191535/1e09f029-6103-403f-a6b9-e4cec9532d39_figure3.gif"/>
                </fig>
                <p>

                    <bold>Experiment 3: Distributed Optimization Performance (see</bold> 
                    <xref ref-type="table" rid="T9">
Table 9</xref>
                    <bold>)</bold>
                </p>
                <table-wrap id="T9" orientation="portrait" position="float">
                    <label>
Table 9. </label>
                    <caption>
                        <title>ADMM scalability analysis for large-scale problem (N = 16,384, D = 169).</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Workers 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>M</mml:mi>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Local size 
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>N</mml:mi>
                                                <mml:mi>m</mml:mi>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">ADMM iterations</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Wall-clock time (s)</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Communication volume</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Speedup factor</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">1 (Centralized)</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">16384</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">-</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>124.7</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>3.2</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">-</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1.00</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">2</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">8192</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>28</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>2</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>68.3</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>2.1</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>56</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>4</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1.83</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">4</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">4096</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>35</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>3</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>41.2</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>1.8</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>140</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>12</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">3.03</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">8</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">2048</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>47</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>4</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>29.8</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>1.4</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>376</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>32</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">4.18</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">16</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1024</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>68</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>5</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>26.4</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>1.2</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>1088</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>80</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">4.72</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
                <p>In 
                    <xref ref-type="fig" rid="f4">
Figure 4</xref> the consensus-based approach achieves near-linear speedup for moderate worker counts, with communication overhead becoming dominant beyond 8 workers. The method successfully handles problem sizes that are infeasible for centralized solvers due to memory constraints.</p>
                <fig fig-type="figure" id="f4" orientation="portrait" position="float">
                    <label>
Figure 4. </label>
                    <caption>
                        <title>Strong scaling efficiency of ADMM implementation.</title>
                        <p>The figure assesses the parallel performance of the ADMM (Alternating Direction Method of Multipliers) algorithm. It plots the computational efficiency (typically normalized speedup or parallel efficiency) as a function of the number of processing cores or nodes, 
                            <italic toggle="yes">P</italic>, while keeping the total problem size fixed. The curve illustrates how well the consensus-based algorithm distributes the workload, with high efficiency indicating low communication overhead and effective utilization of parallel resources.</p>
                    </caption>
                    <graphic id="gr4" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/191535/1e09f029-6103-403f-a6b9-e4cec9532d39_figure4.gif"/>
                </fig>
                <p>

                    <bold>Experiment 4: Quadrature Weight Analysis (see</bold> 
                    <xref ref-type="table" rid="T10">
Table 10</xref>
                    <bold>)</bold>
                </p>
                <table-wrap id="T10" orientation="portrait" position="float">
                    <label>
Table 10. </label>
                    <caption>
                        <title>Empirical verification of quadrature weight properties.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">Node family</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>N</mml:mi>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mi>L</mml:mi>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>&#x03bc;</mml:mi>
                                                <mml:mi>min</mml:mi>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:msub>
                                                <mml:mi>&#x03bc;</mml:mi>
                                                <mml:mi>max</mml:mi>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">

                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:munder>
                                                <mml:mo>&#x2211;</mml:mo>
                                                <mml:mi>i</mml:mi>
                                            </mml:munder>
                                            <mml:msub>
                                                <mml:mi>&#x03bc;</mml:mi>
                                                <mml:mi>i</mml:mi>
                                            </mml:msub>
                                        </mml:math>
</inline-formula>
</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">
Negative weight fraction</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Fibonacci</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1024</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">8</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>1.02</mml:mn>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>4</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>1.67</mml:mn>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>2</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>12.566</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>0.008</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>0.000</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Random Uniform</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1024</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">8</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>8.74</mml:mn>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>6</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>2.89</mml:mn>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>2</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>12.561</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>0.015</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>0.000</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Clustered</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">1024</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">12</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mo>&#x2212;</mml:mo>
                                            <mml:mn>3.28</mml:mn>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>4</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>4.17</mml:mn>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>2</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>12.564</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>0.021</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>0.048</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">Minimum Energy</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">256</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">12</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>2.89</mml:mn>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>5</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>1.24</mml:mn>
                                            <mml:mo>&#x00d7;</mml:mo>
                                            <mml:msup>
                                                <mml:mn>10</mml:mn>
                                                <mml:mrow>
                                                    <mml:mo>&#x2212;</mml:mo>
                                                    <mml:mn>2</mml:mn>
                                                </mml:mrow>
                                            </mml:msup>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>12.568</mml:mn>
                                            <mml:mo>&#x00b1;</mml:mo>
                                            <mml:mn>0.006</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <inline-formula>

                                        <mml:math display="inline">
                                            <mml:mn>0.000</mml:mn>
                                        </mml:math>
</inline-formula>
</td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
                <p>The theoretically guaranteed positivity manifests empirically for well-conditioned problems. Clustered distributions with high polynomial degrees may exhibit small negative weights, correlating with condition number degradation as shown in 
                    <xref ref-type="fig" rid="f5">
Figure 5</xref>. Mass conservation holds within numerical precision across all configurations.</p>
                <fig fig-type="figure" id="f5" orientation="portrait" position="float">
                    <label>
Figure 5. </label>
                    <caption>
                        <title>Spatial distribution of quadrature weights for clustered node set.</title>
                        <p>The plot is crucial for diagnosing stability issues, particularly for clustered or non-uniformly distributed node sets (e.g., at the boundaries). The distribution shows whether the weights remain positive and well-behaved, or if they exhibit large, oscillating signs, which would indicate potential instability or the Runge phenomenon in the approximation.</p>
                    </caption>
                    <graphic id="gr5" orientation="portrait" position="float" xlink:href="https://f1000research-files.f1000.com/manuscripts/191535/1e09f029-6103-403f-a6b9-e4cec9532d39_figure5.gif"/>
                </fig>
                <p>

                    <bold>Comprehensive Performance Analysis</bold>
                </p>
                <p>The experimental results consistently validate our theoretical predictions. The Voronoi-weighting strategy successfully mitigates the conditioning issues that plague standard least-squares approaches on non-uniform nodes. The WLS-derived quadrature achieves high-order accuracy while maintaining numerical stability through positive weights. The ADMM-based distributed implementation provides practical scalability to large datasets without sacrificing accuracy.</p>
                <p>The method demonstrates particular strength in handling real-world constraints: it accommodates arbitrary node distributions, provides explicit error control, and scales computationally to massive datasets. These attributes position our framework as a versatile tool for scientific computing applications requiring both approximation and integration on the sphere.</p>
            </sec>
        </sec>
        <sec id="sec13" sec-type="discussion">
            <title>5. Discussion</title>
            <p>The comprehensive theoretical analysis and numerical experiments presented in this work demonstrate that the consensus-based weighted least squares framework represents a significant advancement in spherical approximation and quadrature. These results reveal why our method achieves superior performance compared to existing approaches, while clarifying its practical limitations and scope of applicability.</p>
            <p>The enhanced stability of our weighted least squares approach compared to standard least squares arises from numerical preconditioning. The Voronoi-based weights act as a geometric preconditioner, compensating for non-uniform node distributions and improving the discrete inner product&#x2019;s approximation of the continuous L2L^2L2 inner product. This manifests through the improved spectral properties of the weighted Gram matrix, particularly for clustered node distributions where standard least squares fail even at moderate polynomial degrees (Theorem 1). This geometric weighting aligns with principles explored by 
                <xref ref-type="bibr" rid="ref7">Berman (2024)</xref>, though its application to scattered data approximation is novel. Positive quadrature weights ensure physical meaningfulness, preserving monotonicity and maximum principles; for inherently positive functions such as probability densities, negative weights can yield nonsensical results.</p>
            <p>The consensus-based optimization introduces a trade-off between computational efficiency and communication overhead. Experiments show that distributed ADMM achieves substantial speedups for large datasets despite increased iterations, validating its utility for large-scale problems. However, the penalty parameter &#x03c1;\rho&#x03c1; requires careful tuning (
                <xref ref-type="bibr" rid="ref20">Lin et al., 2022</xref>), and communication overhead grows with iterations and partitions, limiting extreme scalability. Still, the framework allows processing datasets infeasible for centralized solvers, benefiting applications like satellite data analysis and global climate modeling.</p>
            <p>Compared to existing literature, our method offers clear advantages. Voronoi-weighted WLS maintains robust performance for challenging node distributions, unlike standard least squares (
                <xref ref-type="bibr" rid="ref8">Brito and Shah, 2023</xref>). Against area-based or Monte Carlo methods, it achieves higher accuracy for smooth functions via spherical polynomials. While spherical designs can match integration accuracy, they require specialized node sets, whereas our framework accommodates arbitrary nodes while maintaining high-order accuracy&#x2014;critical for sensor networks or astronomical observations.</p>
            <p>The method&#x2019;s performance is most pronounced for smooth functions. For functions with limited regularity or discontinuities, gains over simpler methods may be modest. Theoretical guarantees rely on the Marcinkiewicz-Zygmund condition, providing qualitative rather than quantitative assessment of node quality. Empirically, many practical node sets exhibit favorable properties. The consensus algorithm is sensitive to ADMM parameters, though &#x03c1;&#x2248;1\rho \approx 1&#x03c1;&#x2248;1 typically performs well.</p>
            <p>Future extensions include adaptive node refinement for localized features, automated parameter selection for consensus optimization, and applying similar weighting strategies to other function spaces, such as spherical splines or wavelets. Despite these potential enhancements, the current framework offers a substantial contribution to numerical analysis for spherical problems, combining theoretical robustness, practical flexibility, and computational scalability to address longstanding challenges.</p>
        </sec>
        <sec id="sec14" sec-type="conclusion">
            <title>6. Conclusion</title>
            <p>This research addresses the long-standing challenge of stable and accurate function approximation and numerical integration on the sphere from scattered data, with implications across geophysics, astrophysics, and machine learning. We introduced a novel framework combining a geometrically-informed weighted least squares formulation with a consensus-based distributed optimization strategy. Voronoi cell areas serve as weights, preconditioning the system against ill-conditioning from non-uniform node distributions, while the global problem is reformulated into a distributed consensus optimization solvable via ADMM. Theoretical analysis establishes stable conditioning under Marcinkiewicz-Zygmund sampling, derives error bounds decoupling approximation and noise propagation, and proves positivity and conservation of the resulting quadrature rule. Numerical experiments validate these insights, showing high accuracy across diverse node distributions, superior performance to standard least squares and area-based quadrature, and efficient scaling to large datasets. This framework bridges a critical gap, providing a unified solution that simultaneously delivers high-order accuracy, numerical stability, and computational scalability for spherical problems.</p>
            <p>Looking forward, several promising directions emerge. The theoretical framework could be extended to handle noisy data, incorporating statistical regularization for optimal recovery under stochastic errors. Algorithmically, exploring alternative distributed optimization schemes, such as decentralized conjugate gradient or stochastic methods, may accelerate convergence for structured problems. Practical applications include distributed weather sensor data assimilation and spherical convolutional neural networks, enabling efficient training and representation learning on spherical domains. Furthermore, the approach can potentially extend to other compact manifolds like the rotation group SO(3), broadening its applicability to molecular dynamics, computer vision, and directional data analysis. Such extensions would require adapting harmonic analysis and geometric principles for each manifold, but promise a powerful general toolkit for approximation and integration on curved spaces.</p>
        </sec>
        <sec id="sec16">
            <title>Ethical approval update</title>
            <p>&#x201c;This study received ethical approval from the Al-Ameed University Institutional Review Board (IRB No. AAU-IRB-2025-014, dated March 15, 2025), confirming adherence to institutional guidelines for computational simulations involving no human or animal subjects.&#x201d; No independent external review board was required, as the work is purely mathematical modeling.</p>
        </sec>
        <sec id="sec19" sec-type="data-availability">
            <title>Data availability</title>
            <p>Datasets supporting the results and analyses (including node coordinates, function values, Voronoi weights, and computed quadrature rules for all experiments) are available at&#x00a0;
                <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.17772389">

                    <bold>10.5281/zenodo.17772389</bold>
</ext-link> or upon request from the corresponding author (mushtaq.k@alameed.edu.iq) (
                <xref ref-type="bibr" rid="ref1">Abdalrahem et al. 2025</xref>).</p>
            <p>Data are available under the terms of the 
                <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license</ext-link> (CC-BY 4.0).</p>
        </sec>
    </body>
    <back>
        <ref-list>
            <title>References</title>
            <ref id="ref1">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Abdalrahem</surname>
                            <given-names>MK</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Raheem</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ali</surname>
                            <given-names>K</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>ChaosConsensusDatasetv1: Time series data and multifractal measures for Raft consensus simulation and blockchain analysis.</article-title>
                    <source>

                        <italic toggle="yes">Zenodo.</italic>
</source>
                    <year>2025</year>.</mixed-citation>
            </ref>
            <ref id="ref2">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Abdeljawad</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Dittrich</surname>
                            <given-names>T</given-names>
                        </name>
</person-group>:
                    <article-title>Space-Time Approximation with Shallow Neural Networks in Fourier Lebesgue spaces.</article-title>
                    <source>

                        <italic toggle="yes">arXiv preprint arXiv:2312.08461.</italic>
</source>
                    <year>2023</year>.</mixed-citation>
            </ref>
            <ref id="ref3">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Adcock</surname>
                            <given-names>B</given-names>
                        </name>
</person-group>:
                    <article-title>Optimal sampling for least-squares approximation.</article-title>
                    <source>

                        <italic toggle="yes">arXiv preprint arXiv:2409.02342.</italic>
</source>
                    <year>2024</year>.</mixed-citation>
            </ref>
            <ref id="ref4">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Ahmad</surname>
                            <given-names>B</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ahmad</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ali</surname>
                            <given-names>L</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Significance of the Coriolis Force on the Dynamics of Carreau&#x2013;Yasuda Rotating Nanofluid Subject to Darcy&#x2013;Forchheimer and Gyrotactic Microorganisms.</article-title>
                    <source>

                        <italic toggle="yes">Mathematics.</italic>
</source>
                    <year>2022</year>;<volume>10</volume>(<issue>16</issue>):<fpage>2855</fpage>.
                    <pub-id pub-id-type="doi">10.3390/math10162855</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref5">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Arora</surname>
                            <given-names>K</given-names>
                        </name>
</person-group>:
                    <article-title>Geomagnetism through core-crust-space: Discoveries over Time.</article-title>
                    <source>

                        <italic toggle="yes">J. Geol. Soc. India.</italic>
</source>
                    <year>2023</year>;<volume>99</volume>(<issue>8</issue>):<fpage>1039</fpage>&#x2013;<lpage>1042</lpage>.
                    <pub-id pub-id-type="doi">10.1007/s12594-023-2430-x</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref6">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Alhadawi</surname>
                            <given-names>HS</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ahmad</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Salih</surname>
                            <given-names>SQ</given-names>
                        </name>
</person-group>:
                    <article-title>A novel bijective substitution box design based on nomadic people optimizer and discrete chaotic map.</article-title>
                    <source>

                        <italic toggle="yes">Knowl.-Based Syst.</italic>
</source>
                    <year>2025</year>;<volume>325</volume>:<fpage>113977</fpage>.
                    <pub-id pub-id-type="doi">10.1016/j.knosys.2025.113977</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref7">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Berman</surname>
                            <given-names>RJ</given-names>
                        </name>
</person-group>:
                    <article-title>The spherical ensemble and quasi-Monte-Carlo designs.</article-title>
                    <source>

                        <italic toggle="yes">Constr. Approx.</italic>
</source>
                    <year>2024</year>;<volume>59</volume>(<issue>2</issue>):<fpage>457</fpage>&#x2013;<lpage>483</lpage>.
                    <pub-id pub-id-type="doi">10.1007/s00365-023-09646-0</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref8">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Brito</surname>
                            <given-names>R</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Shah</surname>
                            <given-names>S</given-names>
                        </name>
</person-group>:
                    <article-title>Extreme mass-ratio inspirals into black holes surrounded by scalar clouds.</article-title>
                    <source>

                        <italic toggle="yes">Physical Review D.</italic>
</source>
                    <year>2023</year>;<volume>108</volume>(<issue>8</issue>):<fpage>084019</fpage>.
                    <pub-id pub-id-type="doi">10.1103/PhysRevD.108.084019</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref9">
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Chen</surname>
                            <given-names>Y</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Eldan</surname>
                            <given-names>R</given-names>
                        </name>
</person-group>:
                    <chapter-title>Localization schemes: A framework for proving mixing bounds for Markov chains.</chapter-title>
                    <source>

                        <italic toggle="yes">2022 IEEE 63rd Annual Symposium on Foundations of Computer Science (FOCS).</italic>
</source>
                    <publisher-name>IEEE</publisher-name>;<year>2022, October</year>; pp.<fpage>110</fpage>&#x2013;<lpage>122</lpage>.</mixed-citation>
            </ref>
            <ref id="ref10">
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Delsarte</surname>
                            <given-names>P</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Goethals</surname>
                            <given-names>JM</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Seidel</surname>
                            <given-names>JJ</given-names>
                        </name>
</person-group>:
                    <chapter-title>Spherical codes and designs.</chapter-title>
                    <source>

                        <italic toggle="yes">Geometry and Combinatorics.</italic>
</source>
                    <publisher-name>Academic Press</publisher-name>;<year>1991</year>; pp.<fpage>68</fpage>&#x2013;<lpage>93</lpage>.</mixed-citation>
            </ref>
            <ref id="ref11">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Driscoll</surname>
                            <given-names>JR</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Healy</surname>
                            <given-names>DM</given-names>
                        </name>
</person-group>:
                    <article-title>Computing Fourier transforms and convolutions on the 2-sphere.</article-title>
                    <source>

                        <italic toggle="yes">Adv. Appl. Math.</italic>
</source>
                    <year>1994</year>;<volume>15</volume>(<issue>2</issue>):<fpage>202</fpage>&#x2013;<lpage>250</lpage>.
                    <pub-id pub-id-type="doi">10.1006/aama.1994.1008</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref12">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Du</surname>
                            <given-names>Q</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Faber</surname>
                            <given-names>V</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Gunzburger</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>Centroidal Voronoi tessellations: Applications and algorithms.</article-title>
                    <source>

                        <italic toggle="yes">SIAM Rev.</italic>
</source>
                    <year>1999</year>;<volume>41</volume>(<issue>4</issue>):<fpage>637</fpage>&#x2013;<lpage>676</lpage>.
                    <pub-id pub-id-type="doi">10.1137/S0036144599352836</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref13">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Ehler</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>Hybrid spherical designs.</article-title>
                    <source>

                        <italic toggle="yes">arXiv preprint arXiv:2502.07720.</italic>
</source>
                    <year>2025</year>.</mixed-citation>
            </ref>
            <ref id="ref14">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Gopalakrishnan</surname>
                            <given-names>T</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Almngoshi</surname>
                            <given-names>HZ</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Koppula</surname>
                            <given-names>VK</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Fractal image compression using digital cone metric space.</article-title>
                    <source>

                        <italic toggle="yes">Journal of Interdisciplinary Mathematics.</italic>
</source>
                    <year>2025</year>;<volume>28</volume>(<issue>2</issue>):<fpage>647</fpage>&#x2013;<lpage>658</lpage>.
                    <pub-id pub-id-type="doi">10.47974/JIM-2108</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref15">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Haberstich</surname>
                            <given-names>C</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Nouy</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Perrin</surname>
                            <given-names>G</given-names>
                        </name>
</person-group>:
                    <article-title>Boosted optimal weighted least-squares.</article-title>
                    <source>

                        <italic toggle="yes">Math. Comput.</italic>
</source>
                    <year>2022</year>;<volume>91</volume>(<issue>335</issue>):<fpage>1281</fpage>&#x2013;<lpage>1315</lpage>.
                    <pub-id pub-id-type="doi">10.1090/mcom/3710</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref16">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Harith</surname>
                            <given-names>IK</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Nadir</surname>
                            <given-names>W</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Salah</surname>
                            <given-names>MS</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Prediction of high-performance concrete strength using machine learning with hierarchical regression.</article-title>
                    <source>

                        <italic toggle="yes">Multiscale and Multidisciplinary Modeling, Experiments and Design.</italic>
</source>
                    <year>2024</year>;<volume>7</volume>(<issue>5</issue>):<fpage>4911</fpage>&#x2013;<lpage>4922</lpage>.
                    <pub-id pub-id-type="doi">10.1007/s41939-024-00467-7</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref17">
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Ivanov</surname>
                            <given-names>KG</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Kerkyacharian</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Kyriazis</surname>
                            <given-names>G</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <chapter-title>On the Construction of Bases and Frames with Applications.</chapter-title>
                    <source>

                        <italic toggle="yes">Multiscale, Nonlinear and Adaptive Approximation II.</italic>
</source>
                    <publisher-loc>Cham</publisher-loc>:
                    <publisher-name>Springer Nature Switzerland</publisher-name>;<year>2024</year>; pp.<fpage>347</fpage>&#x2013;<lpage>381</lpage>.</mixed-citation>
            </ref>
            <ref id="ref18">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Lakshmi</surname>
                            <given-names>L</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ali</surname>
                            <given-names>ABM</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Devi</surname>
                            <given-names>KDS</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Opinion mining in e-commerce: Evaluating machine learning approaches for sentiment analysis.</article-title>
                    <source>

                        <italic toggle="yes">Results in Control and Optimization.</italic>
</source>
                    <year>2025</year>;<volume>19</volume>:<fpage>100575</fpage>.
                    <pub-id pub-id-type="doi">10.1016/j.rico.2025.100575</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref19">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Lin</surname>
                            <given-names>SB</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Wang</surname>
                            <given-names>YG</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Zhou</surname>
                            <given-names>DX</given-names>
                        </name>
</person-group>:
                    <article-title>Distributed filtered hyperinterpolation for noisy data on the sphere.</article-title>
                    <source>

                        <italic toggle="yes">SIAM J. Numer. Anal.</italic>
</source>
                    <year>2021</year>;<volume>59</volume>(<issue>2</issue>):<fpage>634</fpage>&#x2013;<lpage>659</lpage>.
                    <pub-id pub-id-type="doi">10.1137/19M1281095</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref20">
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Lin</surname>
                            <given-names>Z</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Li</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Fang</surname>
                            <given-names>C</given-names>
                        </name>
</person-group>:
                    <source>

                        <italic toggle="yes">Alternating direction method of multipliers for machine learning.</italic>
</source>
                    <publisher-loc>Singapore</publisher-loc>:
                    <publisher-name>Springer</publisher-name>;<year>2022</year>;<fpage>1</fpage>&#x2013;<lpage>263</lpage>.</mixed-citation>
            </ref>
            <ref id="ref21">
                <mixed-citation publication-type="other">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Lu</surname>
                            <given-names>W</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Wang</surname>
                            <given-names>H</given-names>
                        </name>
</person-group>:
                    <article-title>Approximation and quadrature by weighted least squares polynomials on the sphere.</article-title>
                    <source>

                        <italic toggle="yes">arXiv preprint arXiv:2101.03658.</italic>
</source>
                    <year>2021</year>.</mixed-citation>
            </ref>
            <ref id="ref22">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Mateos</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Rajawat</surname>
                            <given-names>K</given-names>
                        </name>
</person-group>:
                    <article-title>Dynamic network cartography: Advances in network health monitoring.</article-title>
                    <source>

                        <italic toggle="yes">IEEE Signal Process. Mag.</italic>
</source>
                    <year>2013</year>;<volume>30</volume>(<issue>3</issue>):<fpage>129</fpage>&#x2013;<lpage>143</lpage>.
                    <pub-id pub-id-type="doi">10.1109/MSP.2012.2232355</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref23">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Mhaskar</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Narcowich</surname>
                            <given-names>F</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ward</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>:
                    <article-title>Spherical Marcinkiewicz&#x2013;Zygmund inequalities and positive quadrature.</article-title>
                    <source>

                        <italic toggle="yes">Math. Comput.</italic>
</source>
                    <year>2001</year>;<volume>70</volume>(<issue>235</issue>):<fpage>1113</fpage>&#x2013;<lpage>1131</lpage>.
                    <pub-id pub-id-type="doi">10.1090/S0025-5718-00-01240-0</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref24">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Mirzaei</surname>
                            <given-names>D</given-names>
                        </name>
</person-group>:
                    <article-title>The direct radial basis function partition of unity (D-RBF-PU) method for solving PDEs.</article-title>
                    <source>

                        <italic toggle="yes">SIAM J. Sci. Comput.</italic>
</source>
                    <year>2021</year>;<volume>43</volume>(<issue>1</issue>):<fpage>A54</fpage>&#x2013;<lpage>A83</lpage>.
                    <pub-id pub-id-type="doi">10.1137/19M128911X</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref25">
                <mixed-citation publication-type="journal">
                    <collab>Planck Collaboration</collab>:
                    <article-title>Planck 2018 results. I. Overview and the cosmological legacy of Planck.</article-title>
                    <source>

                        <italic toggle="yes">Astron. Astrophys.</italic>
</source>
                    <year>2020</year>;<volume>641</volume>:<fpage>A1</fpage>.
                    <pub-id pub-id-type="doi">10.1051/0004-6361/201833880</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref26">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Schneider</surname>
                            <given-names>D</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Uekermann</surname>
                            <given-names>B</given-names>
                        </name>
</person-group>:
                    <article-title>Efficient Partition-of-Unity Radial-Basis-Function Interpolation for Coupled Problems.</article-title>
                    <source>

                        <italic toggle="yes">SIAM J. Sci. Comput.</italic>
</source>
                    <year>2025</year>;<volume>47</volume>(<issue>2</issue>):<fpage>B558</fpage>&#x2013;<lpage>B582</lpage>.
                    <pub-id pub-id-type="doi">10.1137/24M1663843</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref27">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Xin</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Zhou</surname>
                            <given-names>Z</given-names>
                        </name>

                        <name name-style="western">
                            <surname>An</surname>
                            <given-names>D</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>Fast and accurate spherical harmonics products.</article-title>
                    <source>

                        <italic toggle="yes">ACM Trans. Graph.</italic>
</source>
                    <year>2021</year>;<volume>40</volume>(<issue>6</issue>):<fpage>1</fpage>&#x2013;<lpage>14</lpage>.
                    <pub-id pub-id-type="doi">10.1145/3478513.3480563</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref28">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Abdalrahem</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>Extended Data Package.</article-title>
                    <source>

                        <italic toggle="yes">Zenodo.</italic>
</source>
                    <year>2025</year>.
                    <pub-id pub-id-type="doi">10.5281/zenodo.17772389</pub-id>
                </mixed-citation>
            </ref>
        </ref-list>
    </back>
</article>
