<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Appl. Math. Stat.</journal-id>
<journal-title>Frontiers in Applied Mathematics and Statistics</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Appl. Math. Stat.</abbrev-journal-title>
<issn pub-type="epub">2297-4687</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fams.2018.00061</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Applied Mathematics and Statistics</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>NFFT Meets Krylov Methods: Fast Matrix-Vector Products for the Graph Laplacian of Fully Connected Networks</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Alfke</surname> <given-names>Dominik</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/631776/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>Potts</surname> <given-names>Daniel</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<xref ref-type="corresp" rid="c001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/279423/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Stoll</surname> <given-names>Martin</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/611597/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Volkmer</surname> <given-names>Toni</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/320574/overview"/>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Chair of Scientific Computing, Faculty of Mathematics, Technische Universit&#x000E4;t Chemnitz</institution>, <addr-line>Chemnitz</addr-line>, <country>Germany</country></aff>
<aff id="aff2"><sup>2</sup><institution>Chair of Applied Functional Analysis, Faculty of Mathematics, Technische Universit&#x000E4;t Chemnitz</institution>, <addr-line>Chemnitz</addr-line>, <country>Germany</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Michael Ng, Hong Kong Baptist University, Hong Kong</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Sergiy Pereverzyev Jr, Innsbruck Medical University, Austria; Hyenkyun Woo, Korea University of Technology and Education, South Korea; Chao Chen, Stanford University, United States</p></fn>
<corresp id="c001">&#x0002A;Correspondence: Daniel Potts <email>daniel.potts&#x00040;mathematik.tu-chemnitz.de</email></corresp>
<fn fn-type="other" id="fn001"><p>This article was submitted to Mathematics of Computation and Data Science, a section of the journal Frontiers in Applied Mathematics and Statistics</p></fn></author-notes>
<pub-date pub-type="epub">
<day>19</day>
<month>12</month>
<year>2018</year>
</pub-date>
<pub-date pub-type="collection">
<year>2018</year>
</pub-date>
<volume>4</volume>
<elocation-id>61</elocation-id>
<history>
<date date-type="received">
<day>07</day>
<month>09</month>
<year>2018</year>
</date>
<date date-type="accepted">
<day>28</day>
<month>11</month>
<year>2018</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2018 Alfke, Potts, Stoll and Volkmer.</copyright-statement>
<copyright-year>2018</copyright-year>
<copyright-holder>Alfke, Potts, Stoll and Volkmer</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract><p>The graph Laplacian is a standard tool in data science, machine learning, and image processing. The corresponding matrix inherits the complex structure of the underlying network and is in certain applications densely populated. This makes computations, in particular matrix-vector products, with the graph Laplacian a hard task. A typical application is the computation of a number of its eigenvalues and eigenvectors. Standard methods become infeasible as the number of nodes in the graph is too large. We propose the use of the fast summation based on the nonequispaced fast Fourier transform (NFFT) to perform the dense matrix-vector product with the graph Laplacian fast without ever forming the whole matrix. The enormous flexibility of the NFFT algorithm allows us to embed the accelerated multiplication into Lanczos-based eigenvalues routines or iterative linear system solvers and even consider other than the standard Gaussian kernels. We illustrate the feasibility of our approach on a number of test problems from image segmentation to semi-supervised learning based on graph-based PDEs. In particular, we compare our approach with the Nystr&#x000F6;m method. Moreover, we present and test an enhanced, hybrid version of the Nystr&#x000F6;m method, which internally uses the NFFT.</p></abstract>
<kwd-group>
<kwd>Graph Laplacian</kwd>
<kwd>Lanczos method</kwd>
<kwd>eigenvalues</kwd>
<kwd>nonequispaced fast Fourier transform</kwd>
<kwd>machine learning</kwd>
</kwd-group>
<counts>
<fig-count count="9"/>
<table-count count="0"/>
<equation-count count="52"/>
<ref-count count="48"/>
<page-count count="19"/>
<word-count count="10587"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1. Introduction</title>
<p>Graphs are a fundamental tool in the modeling of imaging and data science applications [<xref ref-type="bibr" rid="B1">1</xref>&#x02013;<xref ref-type="bibr" rid="B5">5</xref>]. To apply graph-based techniques, individual data points in a data set or pixels of an image represent the vertex set or nodes <italic>V</italic> of the graph, and the edges indicate the relationship between the vertices. In a number of real-world examples, the graph is sparse in the sense that each vertex is only connected to a small number of other vertices, i.e., the graph affinity matrix is sparsely populated. In other applications, such as the mentioned data points or image pixels, the natural choice for the graph would be a fully connected graph, which is then reflected in dense matrices that represent the graph information. Naturally, if there is no underlying graph the most natural choice is the fully connected graph. As the eigenvectors of the corresponding graph Laplacian are crucial in reducing the complexity of the underlying problem or for the extraction of quantities of interest [<xref ref-type="bibr" rid="B2">2</xref>, <xref ref-type="bibr" rid="B6">6</xref>, <xref ref-type="bibr" rid="B7">7</xref>], it is important to compute them accurately and fast. If this matrix is sparse, numerical analysis has provided efficient tools based on the Lanczos process with sparse matrix-vector products that can compute the eigeninformation efficiently. For complex interactions leading to dense matrices, these methods suffer from the high cost of the matrix-vector product.</p>
<p>Our goal is hence to obtain the eigeninformation despite the fact that the graph is fully connected and without any a priori reduction of the graph information. For this we rely on a Lanczos procedure based on Baglama and Reichel [<xref ref-type="bibr" rid="B8">8</xref>]. This method needs to perform the matrix-vector product in a fast way and thus, evaluating all information, without ever fully assembling the graph matrices. In a similar fashion the authors in Bertozzi and Flenner [<xref ref-type="bibr" rid="B7">7</xref>] utilize the well-known Nystr&#x000F6;m method to only work with partial information from the graph and only approximately represent the remaining parts. Such methods are well-known within the fast solution of integral equations and have found applicability within the data science community [<xref ref-type="bibr" rid="B9">9</xref>, <xref ref-type="bibr" rid="B10">10</xref>]. The technique we present here is known as a fast summation method [<xref ref-type="bibr" rid="B11">11</xref>, <xref ref-type="bibr" rid="B12">12</xref>] and is based on the nonequispaced fast Fourier transform (NFFT), see [<xref ref-type="bibr" rid="B13">13</xref>] and the references therein. We apply this method in the setting where the weights of the edges between the vertices are modeled by a Gaussian kernel function of medium to large scaling parameter, such that the Gaussian is not well-localized and most vertices interact with each other. For the case of a smaller scaling parameter and consequently a more localized Gaussian, we refer to Morariu et al. [<xref ref-type="bibr" rid="B14">14</xref>], which is partially based on a technique presented [<xref ref-type="bibr" rid="B15">15</xref>] for Gaussian kernels. Moreover, we remark that the NFFT-based fast summation method considered in this paper does not only support Gaussians but can handle various other rotational invariant functions.</p>
<p>The remaining parts of this paper are structured as follows. In section 2, we first introduce the graph Laplacian and discuss the matrix structure. In section 3, we introduce the NFFT-based fast summation, which allows for computing fast matrix-vector products with the graph Laplacian. In section 4, we then recall Krylov subspace methods and in particular the Lanczos method, which sits at the engine room of the numerical computations to obtain a small number of eigenvectors. We then show that the graph Laplacian provides the ideal environment to be used together with the NFFT-based fast summation, and we obtain the NFFT-based Lanczos method. In section 5 we briefly discuss the Nystr&#x000F6;m method as a direct competitor to our approach. We improve and accelerate this method, creating a new hybrid Nystr&#x000F6;m-Gaussian-NFFT version, which incorporates the NFFT-based fast summation. In section 6, we present comparisons between the NFFT-based Lanczos method, the Nystr&#x000F6;m method and the hybrid Nystr&#x000F6;m-Gaussian-NFFT method with the direct application of the Lanczos method for a dense, large-scale problem. Additionally, we illustrate on a number of exemplary applications, such as spectral clustering and semi-supervised learning, that our approach provides a convenient infrastructure to be used within many different schemes.</p>
</sec>
<sec id="s2">
<title>2. The Graph Laplacian and Fully Connected Graphs</title>
<p>We consider an undirected graph <italic>G</italic> &#x0003D; (<italic>V, E</italic>) with the vertex set <inline-formula><mml:math id="M1"><mml:mi>V</mml:mi><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> and the edge set <italic>E</italic>, cf. [<xref ref-type="bibr" rid="B16">16</xref>] for more information. An edge <italic>e</italic> &#x02208; <italic>E</italic> is a pair of nodes (<italic>v</italic><sub><italic>j</italic></sub>, <italic>v</italic><sub><italic>i</italic></sub>) with <italic>v</italic><sub><italic>j</italic></sub> &#x02260; <italic>v</italic><sub><italic>i</italic></sub> and <italic>v</italic><sub><italic>j</italic></sub>, <italic>v</italic><sub><italic>i</italic></sub> &#x02208; <italic>V</italic>. For weighted undirected graphs, such as the ones considered in this paper, we also have a weight function <italic>w</italic>:<italic>V</italic>&#x000D7;<italic>V</italic> &#x02192; &#x0211D; with <italic>w</italic>(<italic>v</italic><sub><italic>j</italic></sub>, <italic>v</italic><sub><italic>i</italic></sub>) &#x0003D; <italic>w</italic>(<italic>v</italic><sub><italic>i</italic></sub>, <italic>v</italic><sub><italic>j</italic></sub>)for all<italic>j, i</italic>. We assume further that the function is positive for existing edges and zero otherwise. The degree of the vertex <italic>v</italic><sub><italic>j</italic></sub> &#x02208; <italic>V</italic> is defined as</p>
<disp-formula id="E1"><mml:math id="M2"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mi>d</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munder><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:mi>V</mml:mi></mml:mrow></mml:munder></mml:mstyle><mml:mi>w</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Let <bold>W</bold>, <bold>D</bold> &#x02208; &#x0211D;<sup><italic>n</italic>&#x000D7;<italic>n</italic></sup> be the weight matrix and the diagonal degree matrix with entries <italic>W</italic><sub><italic>ji</italic></sub> &#x0003D; <italic>w</italic>(<italic>v</italic><sub><italic>j</italic></sub>, <italic>v</italic><sub><italic>i</italic></sub>) and <italic>D</italic><sub><italic>jj</italic></sub> &#x0003D; <italic>d</italic>(<italic>v</italic><sub><italic>j</italic></sub>). Since we do not permit graphs with loops, <bold>W</bold> is zero on the diagonal. Now the crucial tool for further investigations is the graph Laplacian <bold>L</bold> defined via</p>
<disp-formula id="E2"><mml:math id="M3"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>L</mml:mtext></mml:mstyle><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtable columnalign='left'><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:mi>d</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mtext>&#x000A0;if&#x000A0;</mml:mtext><mml:msub><mml:mi>v</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mi>w</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mtext>&#x000A0;otherwise</mml:mtext><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>i.e., <bold>L</bold> &#x0003D; <bold>D</bold>&#x02212;<bold>W</bold>. The matrix <bold>L</bold> is typically known as the <italic>combinatorial graph Laplacian</italic> and we refer to von Luxburg [<xref ref-type="bibr" rid="B1">1</xref>] for an excellent discussion of its properties. Typically its normalized form is employed for segmentation purposes and we obtain the normalized Laplacian as</p>
<disp-formula id="E3"><label>(1)</label><mml:math id="M4"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>L</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>L</mml:mtext></mml:mstyle><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>obviously a symmetric matrix. Another normalized Laplacian of nonsymmetric form is given by</p>
<disp-formula id="E4"><mml:math id="M5"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>L</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>w</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>L</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>For the purpose of this paper we focus on the symmetric normalized Laplacian <bold>L</bold><sub><italic>s</italic></sub> but everything we derive here can equally be applied to the nonsymmetric version, where we would then have to resort to nonsymmetric Krylov methods such as GMRES [<xref ref-type="bibr" rid="B17">17</xref>]. It is well-known in the area of data science, data mining, image processing and so on that the smallest eigenvalues and its associated eigenvectors possess crucial information about the structure of the data and/or image [<xref ref-type="bibr" rid="B1">1</xref>, <xref ref-type="bibr" rid="B7">7</xref>, <xref ref-type="bibr" rid="B18">18</xref>]. For this we state an amazing property of the graph Laplacian <bold>L</bold> for a general vector <bold>u</bold> &#x02208; &#x0211D;<sup><italic>n</italic></sup> with <italic>n</italic> the dimension of <bold>L</bold></p>
<disp-formula id="E5"><mml:math id="M6"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>L</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>W</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>which, as was illustrated in von Luxburg [<xref ref-type="bibr" rid="B1">1</xref>], is equivalent to the objective function of the graph <italic>RatioCut</italic> problem. Intuitively, assuming the vector <bold>u</bold> to be equal to a constant on one part of the graph <italic>A</italic> and a different constant on the remaining vertices &#x00100;. In this case <bold>u</bold><sup><italic>T</italic></sup><bold>Lu</bold> only contains terms from the edges with vertices in both <italic>A</italic> and &#x00100;. Thus a minimization of <bold>u</bold><sup><italic>T</italic></sup><bold>Lu</bold> results in a minimal cut with respect to the edge weights across <italic>A</italic> and &#x00100;. Obviously, 0 is an eigenvalue of <bold>L</bold> and its normalized variants as <bold>L1</bold> &#x0003D; <bold>D1</bold>&#x02212;<bold>W1</bold> &#x0003D; <bold>0</bold> by the definitions of <bold>D</bold> and <bold>W</bold> with <bold>1</bold> being the vector of all ones. Additionally, spectral clustering techniques heavily rely on the computation of the smallest <italic>k</italic> eigenvectors [<xref ref-type="bibr" rid="B1">1</xref>] and recently semi-supervised learning based on PDEs on graphs introduced by Bertozzi and Flenner [<xref ref-type="bibr" rid="B7">7</xref>] utilizes a small number of such eigenvectors for a complexity reduction. It is therefore imperative to obtain efficient techniques to compute the eigenvalues and eigenvectors fast and accurately. Since we are interested in the <italic>k</italic> smallest eigenvalues of the matrix <inline-formula><mml:math id="M7"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>L</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> it is clear that we can compute the <italic>k</italic> largest postive eigenvalues of the matrix <bold>A</bold>: &#x0003D; <bold>D</bold><sup>&#x02212;1/2</sup><bold>WD</bold><sup>&#x02212;1/2</sup>. In case that the graph <italic>G</italic> &#x0003D; (<italic>V, E</italic>) is sparse in the sense that every vertex is only connected to a small number of other vertices and thus the matrix <bold>W</bold> is sparse, we can utilize the whole arsenal of numerical algorithms for the computations of a small number of eigenvalues, namely the Lanczos process [<xref ref-type="bibr" rid="B19">19</xref>], the Krylov-Schur method [<xref ref-type="bibr" rid="B20">20</xref>], or the Jacobi-Davidson algorithm [<xref ref-type="bibr" rid="B21">21</xref>]. In particular, the ARPACK library [<xref ref-type="bibr" rid="B22">22</xref>] in <sc>Matlab</sc> via the <monospace>eigs</monospace> function is a recommended choice. So frankly speaking, in the case of a sparse and symmetric matrix <bold>W</bold> the eigenvalue problem is fast and the algorithms are very mature. Hence, we focus on the case of fully connected graphs meaning that the matrix <bold>W</bold> is considered dense.</p>
<p>The standard scenario for this case is that each node <italic>v</italic><sub><italic>j</italic></sub> &#x02208; <italic>V</italic> corresponds to a data vector <inline-formula><mml:math id="M8"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and the weight matrix is constructed as</p>
<disp-formula id="E6"><label>(2)</label><mml:math id="M9"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>w</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtable columnalign='left'><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:mi>exp</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mrow><mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow></mml:mrow><mml:mn>2</mml:mn></mml:msup><mml:mo>/</mml:mo><mml:msup><mml:mi>&#x003C3;</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mtext>if&#x000A0;</mml:mtext><mml:mi>j</mml:mi><mml:mo>&#x02260;</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mn>0</mml:mn></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mtext>otherwise</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>with a scaling parameter &#x003C3;. For example, approaches with this kind of graph Laplacian have become increasingly popular in image processing [<xref ref-type="bibr" rid="B23">23</xref>], where the data vectors <bold>v</bold><sub><italic>j</italic></sub> encode color information of image pixels via their color channels. The data point dimension may then be <italic>d</italic> &#x0003D; 1 for grayscale images and <italic>d</italic> &#x0003D; 3 for RGB images. Other applications may involve simple Cartesian coordinates for <bold>v</bold><sub><italic>j</italic></sub>. While Equation (2) is derived from a Gaussian kernel function <italic>K</italic>(<bold>y</bold>): &#x0003D; exp(&#x02212;&#x02016;<bold>y</bold>&#x02016;<sup>2</sup>/&#x003C3;<sup>2</sup>), other applications might call for different kernel functions like the &#x0201C;Laplacian RBF kernel&#x0201D; <italic>K</italic>(<bold>y</bold>): &#x0003D; exp(&#x02212;&#x02016;<bold>y</bold>&#x02016;/&#x003C3;), the multiquadric kernel <italic>K</italic>(<bold>y</bold>): &#x0003D; (&#x02016;<bold>y</bold>&#x02016;<sup>2</sup> &#x0002B; <italic>c</italic><sup>2</sup>)<sup>1/2</sup>, or inverse multiquadric kernel <italic>K</italic>(<bold>y</bold>): &#x0003D; (&#x02016;<bold>y</bold>&#x02016;<sup>2</sup> &#x0002B; <italic>c</italic><sup>2</sup>)<sup>&#x02212;1/2</sup> for a parameter <italic>c</italic> &#x0003E; 0, e.g., cf. section 6.3. This means, the weight matrix may be of the form</p>
<disp-formula id="E7"><label>(3)</label><mml:math id="M10"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtable columnalign='left'><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:mi>K</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mtext>v</mml:mtext><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mtext>v</mml:mtext><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mtext>if&#x000A0;</mml:mtext><mml:mi>j</mml:mi><mml:mo>&#x02260;</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mn>0</mml:mn></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mtext>otherwise</mml:mtext><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Often certain techniques are used to sparsify the Laplacian or otherwise reduce its complexity in order to apply the methods named above. In particular, sparsification has been proposed for the construction of preconditioners [<xref ref-type="bibr" rid="B24">24</xref>] for iterative solvers, which still require the efficient implementation of the matrix vector products. In image processing, this can be achieved by considering only patches or other reduced representations of the image [<xref ref-type="bibr" rid="B18">18</xref>]. However, this might drop crucial nonlocal information encoded in the full graph Laplacian [<xref ref-type="bibr" rid="B23">23</xref>, <xref ref-type="bibr" rid="B25">25</xref>], which is why we want to avoid it here and focus on fully connected graphs with dense Laplacians.</p>
</sec>
<sec id="s3">
<title>3. NFFT-Based Fast Summation</title>
<p>For eigenvalue computation as well as various other applications with the graph Laplacian, one needs to perform matrix-vector multiplications with the matrix <bold>W</bold> or the matrix <bold>A</bold>: &#x0003D; <bold>D</bold><sup>&#x02212;1/2</sup><bold>WD</bold><sup>&#x02212;1/2</sup>. In general, this requires <inline-formula><mml:math id="M11"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow></mml:math></inline-formula>(<italic>n</italic><sup>2</sup>) arithmetic operations. When the matrix <bold>W</bold> has entries (2), this arithmetic complexity can be reduced to <inline-formula><mml:math id="M12"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> using the NFFT-based fast summation [<xref ref-type="bibr" rid="B11">11</xref>, <xref ref-type="bibr" rid="B12">12</xref>]. In general, this method may be applied when the entries of the matrix <bold>W</bold> can be written in the form <italic>W</italic><sub><italic>ji</italic></sub> &#x0003D; <italic>K</italic>(<bold>v</bold><sub><italic>j</italic></sub>&#x02212;<bold>v</bold><sub><italic>i</italic></sub>), where <italic>K</italic>:&#x0211D;<sup><italic>d</italic></sup> &#x02192; &#x02102; is a rotational invariant and smooth kernel function. For applying the NFFT-based fast summation for (3), it would be more convenient to consider the matrix <bold>W</bold> to have entries equal to <italic>K</italic>(<bold>0</bold>) on the diagonal and we refer to this matrix as <inline-formula><mml:math id="M13"><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:math></inline-formula>. Note that it can be written as <inline-formula><mml:math id="M14"><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:mi>K</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>0</mml:mn></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle></mml:math></inline-formula> and thus <inline-formula><mml:math id="M15"><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mo>-</mml:mo><mml:mi>K</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>0</mml:mn></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle></mml:math></inline-formula>. In order to efficiently compute the row sums of <bold>W</bold>, which appear on the diagonal of <bold>D</bold>, we use</p>
<disp-formula id="E8"><mml:math id="M16"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mn>1</mml:mn></mml:mstyle><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mstyle mathvariant="bold"><mml:mn>1</mml:mn></mml:mstyle><mml:mo>-</mml:mo><mml:mi>K</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>0</mml:mn></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mn>1</mml:mn></mml:mstyle><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mstyle mathvariant="bold"><mml:mn>1</mml:mn></mml:mstyle><mml:mo>-</mml:mo><mml:mi>K</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>0</mml:mn></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>1</mml:mn></mml:mstyle><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>We now illustrate how to efficiently compute the matrix-vector product with the matrix <inline-formula><mml:math id="M17"><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:math></inline-formula> using the NFFT-based fast summation. For instance, for the Gaussian kernel function, we have</p>
<disp-formula id="E9"><label>(4)</label><mml:math id="M18"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo class="qopname">exp</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mtext>&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02200;</mml:mo><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo class="qopname">&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>with <inline-formula><mml:math id="M19"><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and we rewrite (4) by</p>
<disp-formula id="E10"><label>(5)</label><mml:math id="M20"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>with the kernel function <italic>K</italic>(<bold>y</bold>): &#x0003D; exp(&#x02212;&#x02016;<bold>y</bold>&#x02016;<sup>2</sup>/&#x003C3;<sup>2</sup>). The key idea of the efficient computation of (5) is approximating <italic>K</italic> by a trigonometric polynomial <italic>K</italic><sub>RF</sub> in order to separate the computations involving the vertices <bold>v</bold><sub><italic>j</italic></sub> and <bold>v</bold><sub><italic>i</italic></sub>. Assuming we have such a <italic>d</italic>-variate trigonometric polynomial</p>
<disp-formula id="E11"><label>(6)</label><mml:math id="M21"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>K</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>y</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02248;</mml:mo><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mtext>RF</mml:mtext></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>y</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle><mml:mo>&#x02208;</mml:mo><mml:msub><mml:mrow><mml:mi>I</mml:mi></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder></mml:mstyle><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mtext>e</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mi>&#x003C0;</mml:mi><mml:mtext>i</mml:mtext><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>y</mml:mtext></mml:mstyle></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>I</mml:mi></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mi>N</mml:mi><mml:mo>/</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:mi>N</mml:mi><mml:mo>/</mml:mo><mml:mn>2</mml:mn><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>/</mml:mo><mml:mn>2</mml:mn><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>with bandwidth <italic>N</italic> &#x02208; 2&#x02115; and Fourier coefficients <inline-formula><mml:math id="M23"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mrow></mml:msub></mml:math></inline-formula>, we replace <italic>K</italic> by <italic>K</italic><sub>RF</sub> in (5) and we obtain</p>
<disp-formula id="E13"><mml:math id="M24"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02248;</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mtext>RF</mml:mtext></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mtext>RF</mml:mtext></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle><mml:mo>&#x02208;</mml:mo><mml:msub><mml:mrow><mml:mi>I</mml:mi></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder></mml:mstyle><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mtext>e</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mi>&#x003C0;</mml:mi><mml:mtext>i</mml:mtext><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle><mml:mo>&#x02208;</mml:mo><mml:msub><mml:mrow><mml:mi>I</mml:mi></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder></mml:mstyle><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mtext>e</mml:mtext></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>&#x003C0;</mml:mi><mml:mtext>i</mml:mtext><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mtext>e</mml:mtext></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mi>&#x003C0;</mml:mi><mml:mtext>i</mml:mtext><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mtext>&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02200;</mml:mo><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mi>n</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Using the NFFT [<xref ref-type="bibr" rid="B13">13</xref>], one computes the inner and outer sums for all <italic>j</italic> &#x0003D; 1, &#x02026;, <italic>n</italic> totally in <inline-formula><mml:math id="M25"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup><mml:mo class="qopname">log</mml:mo><mml:mi>N</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> arithmetic operations, where <italic>m</italic> &#x02208; &#x02115; is an internal window cut-off parameter which influences the accuracy of the NFFT. Please note that since <italic>K</italic><sub>RF</sub> and <italic>f</italic><sub>RF</sub> are 1-periodic functions but neither <italic>K</italic> nor <italic>f</italic> are, ones needs to shift and scale the nodes <bold>v</bold><sub><italic>j</italic></sub> such that they are contained in a subset of the cube [&#x02212;1/4, 1/4]<sup><italic>d</italic></sup> ensuring <inline-formula><mml:math id="M26"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>. Depending on the Fourier coefficients <inline-formula><mml:math id="M27"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mrow></mml:msub></mml:math></inline-formula>, <bold>l</bold> &#x02208; <italic>I</italic><sub><italic>N</italic></sub>, of the trigonometric polynomial <italic>K</italic><sub>RF</sub>, where <inline-formula><mml:math id="M28"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mrow></mml:msub></mml:math></inline-formula> still have to be determined, we may need to scale the nodes <bold>v</bold><sub><italic>j</italic></sub> to a slightly smaller cube.</p>
<p>We emphasize that we are not restricted to the Gaussian weight function <inline-formula><mml:math id="M29"><mml:mi>w</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mo class="qopname">exp</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mo>&#x02016;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>/</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> or a rotational invariant weight function. In fact, any kernel function <italic>K</italic> that can be well approximated by a trigonometric polynomial <italic>K</italic><sub>RF</sub> may be used.</p>
<p>Next, we describe an approach to obtain suitable Fourier coefficients <inline-formula><mml:math id="M30"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mrow></mml:msub></mml:math></inline-formula> of <italic>K</italic><sub>RF</sub> based on sampling values of <italic>K</italic>. Especially, we want to obtain a good approximation of <italic>K</italic> using a small number of Fourier coefficients <inline-formula><mml:math id="M31"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mrow></mml:msub></mml:math></inline-formula>. Therefore, we regularize <italic>K</italic> to obtain a 1-periodic smooth kernel function <italic>K</italic><sub>R</sub>, which is <italic>p</italic>&#x02212;1 times continuously differentiable (in the periodic setting), such that its Fourier coefficients decay in a fast way. Then, we approximate the Fourier coefficients of <italic>K</italic><sub>R</sub> using the trapezoidal rule and this yields the Fourier coefficients <inline-formula><mml:math id="M32"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mrow></mml:msub></mml:math></inline-formula> of <italic>K</italic><sub>RF</sub>.</p>
<p>For a rotational invariant kernel function <italic>K</italic>(<bold>y</bold>), which is sufficiently smooth except at the &#x0201C;boundaries&#x0201D; of the cube [&#x02212;1/2, 1/2]<sup><italic>d</italic></sup>, e.g., <italic>K</italic>(<bold>y</bold>) &#x0003D; exp(&#x02212;&#x02016;<bold>y</bold>&#x02016;<sup>2</sup>/&#x003C3;<sup>2</sup>), we only need to regularize near &#x02016;<bold>y</bold>&#x02016; &#x0003D; 1/2. We use the ansatz</p>
<graphic xlink:href="fams-04-00061-e0001.tif"/>
<p>where <italic>T</italic><sub>B</sub> is a suitably chosen univariate polynomial, e.g., computed by a two-point Taylor interpolation. The parameter 0 &#x0003C; &#x003B5;<sub>B</sub> &#x0226A; 1/2 determines the size of the regularization region, cf. [<xref ref-type="bibr" rid="B12">12</xref>, section 2]. For the treatment of a rotational invariant kernel function which has a singularity at the origin, we also refer to [<xref ref-type="bibr" rid="B12">12</xref>, section 2]. Now we approximate <italic>K</italic><sub>R</sub> by the <italic>d</italic>-variate trigonometric polynomial <italic>K</italic><sub>RF</sub> from (6), where we compute the Fourier coefficients</p>
<disp-formula id="E15"><label>(7)</label><mml:math id="M34"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>b</mml:mi><mml:mo>&#x00005E;</mml:mo></mml:mover><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mstyle class="text"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mstyle></mml:msub><mml:mo>:</mml:mo><mml:mstyle class="text"><mml:mtext>&#x00200B;</mml:mtext></mml:mstyle><mml:mstyle class="text"><mml:mtext>&#x00200B;</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mi>N</mml:mi></mml:mfrac><mml:mstyle displaystyle="true"><mml:munder><mml:mo>&#x002211;</mml:mo><mml:mrow><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mstyle class="text"><mml:mtext>j</mml:mtext></mml:mstyle></mml:mstyle><mml:mo>&#x002208;</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>N</mml:mi></mml:msub></mml:mrow></mml:munder><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mstyle class="text"><mml:mtext>R</mml:mtext></mml:mstyle></mml:msub></mml:mrow></mml:mstyle><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mstyle class="text"><mml:mtext>j</mml:mtext></mml:mstyle></mml:mstyle><mml:mi>N</mml:mi></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:msup><mml:mstyle class="text"><mml:mtext>e</mml:mtext></mml:mstyle><mml:mrow><mml:mo>&#x002212;</mml:mo><mml:mn>2</mml:mn><mml:mi>&#x0003C0;</mml:mi><mml:mstyle class="text"><mml:mtext>i</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mstyle class="text"><mml:mtext>jl</mml:mtext></mml:mstyle></mml:mstyle><mml:mo>/</mml:mo><mml:mi>N</mml:mi></mml:mrow></mml:msup><mml:mstyle class="text"><mml:mtext>&#x0000A0;&#x0000A0;&#x0000A0;&#x0000A0;</mml:mtext></mml:mstyle><mml:mo>&#x002200;</mml:mo><mml:mstyle mathvariant="bold" mathsize="normal"><mml:mstyle class="text"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mstyle><mml:mo>&#x002208;</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>N</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mstyle class="text"><mml:mtext>&#x0000A0;&#x0000A0;&#x0000A0;&#x0000A0;</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mn>7</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Assuming one evaluation of <italic>K</italic><sub>R</sub> takes <inline-formula><mml:math id="M35"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> arithmetic operations, the computations in (7) require <inline-formula><mml:math id="M36"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>N</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup><mml:mo class="qopname">log</mml:mo><mml:mi>N</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> arithmetic operations in total using the fast Fourier transform.</p>
<p>If all vertices <italic>v</italic><sub><italic>j</italic></sub> and their corresponding data vectors <inline-formula><mml:math id="M37"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, <italic>j</italic> &#x0003D; 1, &#x02026;, <italic>n</italic>, fulfill the property &#x02016;<bold>v</bold><sub><italic>j</italic></sub>&#x02016; &#x02264; 1/4&#x02212;&#x003B5;<sub>B</sub>/2, we have &#x02016;<bold>v</bold><sub><italic>j</italic></sub>&#x02212;<bold>v</bold><sub><italic>i</italic></sub>&#x02016; &#x02264; 1/2&#x02212;&#x003B5;<sub>B</sub> and we obtain an approximation of (5) by</p>
<disp-formula id="E16"><mml:math id="M38"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mover accent='true'><mml:mtext>W</mml:mtext><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mi>x</mml:mi></mml:mstyle></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>f</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mtext>R</mml:mtext></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</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:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mstyle><mml:msub><mml:mi>K</mml:mi><mml:mtext>R</mml:mtext></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02248;</mml:mo><mml:msub><mml:mi>f</mml:mi><mml:mrow><mml:mtext>RF</mml:mtext></mml:mrow></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</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:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mstyle><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mtext>RF</mml:mtext></mml:mrow></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Otherwise, we compute a correction factor <inline-formula><mml:math id="M39"><mml:mi>&#x003C1;</mml:mi><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>4</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mrow><mml:mtext>B</mml:mtext></mml:mrow></mml:msub><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>/</mml:mo><mml:munder class="msub"><mml:mrow><mml:mo class="qopname">max</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo class="qopname">&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:munder><mml:mo>&#x02016;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02016;</mml:mo></mml:math></inline-formula>, using transformed vertices <inline-formula><mml:math id="M40"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mi>&#x003C1;</mml:mi></mml:math></inline-formula>, and adjust parameters of the kernel function appropriately. For instance, in case of the Gaussian kernel function, we replace the scaling parameter &#x003C3; by <inline-formula><mml:math id="M41"><mml:mover accent="true"><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:mi>&#x003C3;</mml:mi><mml:mi>&#x003C1;</mml:mi></mml:math></inline-formula> for the regularized kernel function <italic>K</italic><sub>R</sub>.</p>
<p>The error of the approximation <inline-formula><mml:math id="M42"><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02248;</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mtext>RF</mml:mtext></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> depends on the kernel function as well as on the choice of the regularization smoothness <italic>p</italic>, the size of the regularization region &#x003B5;<sub>B</sub>, the bandwidth <italic>N</italic>, and the window cut-off parameter <italic>m</italic>. For a fixed accuracy, we fix these parameters <italic>p</italic>, &#x003B5;<sub>B</sub>, <italic>N</italic>, and <italic>m</italic>. Hence, for small to medium dimensions <italic>d</italic>, we obtain a fast approximate algorithm for the matrix-vector multiplication <inline-formula><mml:math id="M43"><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:math></inline-formula> of complexity <inline-formula><mml:math id="M44"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, cf. Algorithm 1. This algorithm is implemented as <monospace>applications/fastsum</monospace> and <monospace>matlab/fastsum</monospace> in C and <sc>Matlab</sc> within the NFFT3 software library<xref ref-type="fn" rid="fn0001"><sup>1</sup></xref>, see also [<xref ref-type="bibr" rid="B13">13</xref>], and we use the default Kaiser-Bessel window function. In Figure <xref ref-type="fig" rid="F1">1</xref>, we list the relevant control parameters of Algorithm 1 and regularization approach (7).</p>
<table-wrap position="float">
<label>Algorithm 1</label>
<caption><p>Fast approximate matrix-vector multiplication <inline-formula><mml:math id="M200"><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mover accent='true'><mml:mtext>W</mml:mtext><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mi>x</mml:mi></mml:mstyle></mml:math></inline-formula> using NFFT-based fast summation, <inline-formula><mml:math id="M201"><mml:msub><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mover accent='true'><mml:mtext>W</mml:mtext><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mi>x</mml:mi></mml:mstyle><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle='true'><mml:msubsup><mml:mo>&#x02211;</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:msubsup><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mstyle><mml:mi>K</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:math></inline-formula>, e.g., <inline-formula><mml:math id="M202"><mml:msub><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mover accent='true'><mml:mtext>W</mml:mtext><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mi>x</mml:mi></mml:mstyle><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle='true'><mml:msubsup><mml:mo>&#x02211;</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:msubsup><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mstyle><mml:mi>exp</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mrow><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow></mml:mrow><mml:mn>2</mml:mn></mml:msup><mml:mo>/</mml:mo><mml:msup><mml:mi>&#x003C3;</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:msub><mml:mo>&#x02200;</mml:mo><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:math></inline-formula>.</p></caption>
<graphic xlink:href="fams-04-00061-i0001.tif"/>
</table-wrap>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p>Control parameters for NFFT-based fast summation.</p></caption>
<graphic xlink:href="fams-04-00061-g0001.tif"/>
</fig>
<p>Note that every part of Algorithm 1 is deterministic and linear in the input vector <bold>x</bold>, i.e., the algorithm constitutes a linear operator that can be written as <inline-formula><mml:math id="M45"><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:math></inline-formula> with an error matrix <bold>E</bold>. For theoretical error estimates on <inline-formula><mml:math id="M46"><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:munder class="msub"><mml:mrow><mml:mo class="qopname">max</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:munder><mml:mo>|</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mtext>RF</mml:mtext></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>|</mml:mo></mml:math></inline-formula>, we refer to Potts and Steidl [<xref ref-type="bibr" rid="B11">11</xref>], Potts et al. [<xref ref-type="bibr" rid="B12">12</xref>], and Kunis et al. [<xref ref-type="bibr" rid="B26">26</xref>]. The basic idea is to start with the estimate</p>
<disp-formula id="E17"><label>(8)</label><mml:math id="M47"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mo>|</mml:mo><mml:mi>f</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mtext>RF</mml:mtext></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>|</mml:mo><mml:mo>&#x02264;</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02016;</mml:mo><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mtext>ERR</mml:mtext></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x02016;</mml:mo><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mtext>ERR</mml:mtext></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo class="qopname">max</mml:mo></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>y</mml:mtext></mml:mstyle><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>y</mml:mtext></mml:mstyle><mml:mo>&#x02016;</mml:mo><mml:mo>&#x02264;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mrow><mml:mtext>B</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:munder></mml:mstyle><mml:mo>|</mml:mo><mml:mi>K</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>y</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mtext>RF</mml:mtext></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>y</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>|</mml:mo><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>caused by the approximation of the kernel <italic>K</italic> by a trigonometric polynomial <italic>K</italic><sub>RF</sub>, and to additionally take the errors caused by the NFFT into account. In practice, one may guess &#x02016;<italic>K</italic><sub>ERR</sub>&#x02016;<sub>&#x0221E;</sub> based on sampling values of <italic>K</italic> and <italic>K</italic><sub>RF</sub>. For theoretical error estimates of the NFFT for various window functions, we refer to Keiner et al. [<xref ref-type="bibr" rid="B13">13</xref>] and Nestler [<xref ref-type="bibr" rid="B27">27</xref>]. In practice, choosing the window cut-off parameter of the NFFT <italic>m</italic> &#x0003D; 8 yields approximately IEEE double precision for the default Kaiser-Bessel window, see e.g., [<xref ref-type="bibr" rid="B13">13</xref>, section 5.2].</p>
<p>We again emphasize that Algorithm 1 is not restricted to the Gaussian kernel function. Any kernel function <italic>K</italic> that can be well approximated by a trigonometric polynomial may be used and the corresponding Fourier coefficients <inline-formula><mml:math id="M49"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mrow></mml:msub></mml:math></inline-formula>, <bold>l</bold> &#x02208; <italic>I</italic><sub><italic>N</italic></sub>, are an input parameter of Algorithm 1.</p>
<p>Moreover, for the Gaussian kernel function, one could also use the analytic Fourier coefficients <inline-formula><mml:math id="M50"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mrow></mml:msub></mml:math></inline-formula> from Kunis et al. [<xref ref-type="bibr" rid="B26">26</xref>] for small values of the scaling parameter &#x003C3; instead of computing <inline-formula><mml:math id="M51"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>l</mml:mtext></mml:mstyle></mml:mrow></mml:msub></mml:math></inline-formula> by interpolation in (7). In this case, explicit error bounds for &#x02016;<italic>K</italic><sub>ERR</sub>&#x02016;<sub>&#x0221E;</sub> are available.</p>
<sec>
<title>3.1. Error Propagation for Normalized Matrices</title>
<p>As seen in section 2, many applications involving the Graph Laplacian require matrix vector products with a matrix <bold>A</bold> that itself does not follow the form of (3), but results from normalization of such a matrix <bold>W</bold>. This normalization can be written as <bold>A</bold> &#x0003D; <bold>D</bold><sup>&#x02212;1/2</sup><bold>WD</bold><sup>&#x02212;1/2</sup>, where <bold>D</bold> &#x0003D; diag(<bold>W1</bold>). Since our approach includes replacing all matrix-vector products <bold>Wx</bold> by the approximations <inline-formula><mml:math id="M52"><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle><mml:mo>-</mml:mo><mml:mi>K</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>0</mml:mn></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:math></inline-formula>, this also includes the computation of the degree matrix <bold>D</bold>. The error occurring from this approximation will then propagate to the evaluation error of <bold>Ax</bold>.</p>
<p>Algorithm 2 summarizes the usage of Algorithm 1 for this case. Note that if multiple matrix-vector products are required, e.g., in an iterative scheme, steps 1&#x02013;4 can be performed once in a setup phase. The following lemma gives an estimation of the error of Algorithm 2 depending on the relative error of Algorithm 1.</p>
<table-wrap position="float">
<label>Algorithm 2</label>
<caption><p>Fast approximate matrix-vector multiplication <bold>Ax</bold> using NFFT-based fast summation, with <bold>A</bold> &#x0003D; <bold>D</bold><sup>&#x02212;1/2</sup><bold>WD</bold><sup>&#x02212;1/2</sup>, <bold>W</bold> as in (3) and <bold>D</bold> &#x0003D; diag(<bold>W1</bold>)</p></caption>
<graphic xlink:href="fams-04-00061-i0002.tif"/>
</table-wrap>
<p><bold>Lemma 1</bold>. <italic>Let</italic> <bold>W</bold> &#x02208; &#x0211D;<sup><italic>n</italic>&#x000D7;<italic>n</italic></sup> <italic>be a matrix with non-negative entries and at least one positive entry per row. Given an error matrix</italic> <bold>E</bold> &#x02208; &#x0211D;<sup><italic>n</italic>&#x000D7;<italic>n</italic></sup>, <italic>we define</italic> <bold>W</bold><sub><bold>E</bold></sub> &#x0003D; <bold>W</bold> &#x0002B; <bold>E</bold> <italic>and</italic></p>
<disp-formula id="E19"><mml:math id="M53"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mo stretchy='false'>[</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo stretchy='false'>]</mml:mo></mml:mrow><mml:mi>T</mml:mi></mml:msup><mml:mo>:</mml:mo><mml:mtext>&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mn>1</mml:mn></mml:mstyle><mml:mo>,</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>&#x000A0;&#x000A0;D</mml:mtext></mml:mstyle><mml:mo>:</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>&#x000A0;&#x000A0;</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:mtext>diag</mml:mtext><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;A</mml:mtext></mml:mstyle><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>WD</mml:mtext></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mo stretchy='false'>[</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo stretchy='false'>]</mml:mo></mml:mrow><mml:mi>T</mml:mi></mml:msup><mml:mo>:</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>&#x000A0;&#x000A0;</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mn>1</mml:mn></mml:mstyle><mml:mo>,</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>&#x000A0;&#x000A0;</mml:mtext></mml:mstyle><mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:msub><mml:mo>:</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>&#x000A0;&#x000A0;</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:mtext>diag</mml:mtext><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;A</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:msub><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:msubsup><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:msub><mml:msubsup><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><italic>Let d</italic><sub>min</sub> &#x0003E; 0 <italic>denote the minimum diagonal entry of</italic> <bold>D</bold> <italic>and furthermore set</italic></p>
<disp-formula id="E20"><mml:math id="M54"><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mo class="qopname">min</mml:mo></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mtext>&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mtext class="textrm" mathvariant="normal">and&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mi>&#x003B5;</mml:mi><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
<p><italic>Then, for</italic> &#x003B5; &#x0003C; &#x003B7;, <italic>it holds</italic></p>
<disp-formula id="E21"><mml:math id="M55"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02264;</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x003B5;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B7;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo>-</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><italic>Proof</italic>. Due to</p>
<disp-formula id="E22"><mml:math id="M56"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mo>|</mml:mo><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>|</mml:mo><mml:mo>&#x02264;</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mn>1</mml:mn></mml:mstyle><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow></mml:msub><mml:mstyle mathvariant="bold"><mml:mn>1</mml:mn></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mn>1</mml:mn></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02264;</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mn>1</mml:mn></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>and the fact that <italic>x</italic> &#x021A6; <italic>x</italic><sup>&#x02212;1/2</sup> and its first derivative are monotoneously decreasing, we obtain</p>
<disp-formula id="E23"><mml:math id="M57"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mo>&#x02016;</mml:mo><mml:msup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>D</mml:mi></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>D</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mrow><mml:mi>max</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:munder><mml:mo>&#x0007C;</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mrow><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x0007C;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02264;</mml:mo><mml:munder><mml:mrow><mml:mi>max</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:munder><mml:mi>&#x00025;</mml:mi><mml:munder><mml:mrow><mml:mi>max</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:msub><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:msub><mml:mo>&#x02264;</mml:mo><mml:mi>&#x003B4;</mml:mi><mml:mo>&#x02264;</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:msub><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:msub></mml:mrow></mml:munder><mml:mo>&#x0007C;</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi>&#x003B4;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0007C;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:munder><mml:mrow><mml:mi>max</mml:mi></mml:mrow><mml:mi>i</mml:mi></mml:munder><mml:mo>&#x0007C;</mml:mo><mml:msubsup><mml:mi>d</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:msub><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0007C;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:msup><mml:mrow><mml:mi>min</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>min</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:msub><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0007C;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0007C;</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mo>&#x02016;</mml:mo><mml:mtext>W</mml:mtext><mml:msubsup><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mtext>W</mml:mtext><mml:msubsup><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Analogously we obtain</p>
<disp-formula id="E24"><mml:math id="M58"><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02264;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo>-</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:msubsup><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
<p>Together with <inline-formula><mml:math id="M59"><mml:mo>&#x02016;</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003B7;</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:msubsup><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> and &#x02016;<bold>W</bold><sub><bold>E</bold></sub>&#x02016;<sub>&#x0221E;</sub> &#x02264; (1 &#x0002B; &#x003B5;)&#x02016;<bold>W</bold>&#x02016;<sub>&#x0221E;</sub>, this yields</p>
<disp-formula id="E1000"><mml:math id="M1211"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>A</mml:mi></mml:mstyle><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>A</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle></mml:msub><mml:msub><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>D</mml:mi></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>D</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy='false'>)</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:msup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>D</mml:mi></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msubsup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>D</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy='false'>(</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:msup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>D</mml:mi></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:msubsup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>D</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:msup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>D</mml:mi></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02212;</mml:mo><mml:msubsup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>D</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>E</mml:mi></mml:mstyle><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo stretchy='false'>)</mml:mo><mml:msub><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x02264;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:msubsup><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mtext>&#x02009;</mml:mtext><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:msub><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:msub><mml:mtext>&#x02009;</mml:mtext><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:msubsup><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:msubsup><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mtext>&#x02009;</mml:mtext><mml:mi>&#x003B5;</mml:mi><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:msub><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:msub><mml:mtext>&#x02009;</mml:mtext><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:msubsup><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:msubsup><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mtext>&#x02009;</mml:mtext><mml:mo stretchy='false'>(</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:msub><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>W</mml:mi></mml:mstyle><mml:msubsup><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:munder accentunder='true'><mml:mrow><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy='true'>_</mml:mo></mml:munder><mml:mo stretchy='false'>)</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:munder accentunder='true'><mml:mrow><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy='true'>_</mml:mo></mml:munder><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Now detach the left underlined part from its paranthesed expression and combine it with the right underlined part:</p>
<disp-formula id="E1111"><mml:math id="M1111"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mtext>&#x02003;</mml:mtext><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:munder accentunder='true'><mml:mrow><mml:mi>&#x003B5;</mml:mi><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy='true'>_</mml:mo></mml:munder><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Resolve the binomial expression in the first line and simplify the second line:</p>
<disp-formula id="E25"><mml:math id="M60"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo>&#x02212;</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mfrac></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mn>1</mml:mn><mml:mo>+</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x003B7;</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>This concludes the proof for the desired inequality.&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x025A1;</p>
<p>The requirement &#x003B5; &#x0003C; &#x003B7; means that &#x02016;<bold>E</bold>&#x02016;<sub>&#x0221E;</sub> must be smaller than the smallest diagonal entry in <bold>D</bold>. This condition cannot be avoided since otherwise, negative entries in <bold>D</bold><sub><bold>E</bold></sub> could not be ruled out, leading to imaginary entries in <inline-formula><mml:math id="M61"><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> and thus in <bold>A</bold><sub><bold>E</bold></sub>. On the other hand, if &#x003B5; is well below &#x003B7;, Lemma 1 yields that the absolute error in <bold>A</bold> is linear in &#x003B5;, which is the relative error of Algorithm 1.</p>
<p>Alternatively, by ignoring the error caused by the NFFT, we obtain error estimations of the form</p>
<disp-formula id="E26"><label>(9)</label><mml:math id="M62"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02272;</mml:mo><mml:mo>&#x02016;</mml:mo><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mtext>ERR</mml:mtext></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02264;</mml:mo><mml:mi>n</mml:mi><mml:mo>&#x02016;</mml:mo><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mtext>ERR</mml:mtext></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x021D2;</mml:mo><mml:mtext>&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:mi>&#x003B5;</mml:mi><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x02272;</mml:mo><mml:mi>n</mml:mi><mml:mfrac><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:msub><mml:mrow><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mtext>ERR</mml:mtext></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>In other words, the perturbation grows linearly in the size of the dataset. If either &#x02016;<bold>W</bold>&#x02016;<sub>&#x0221E;</sub> or <italic>d</italic><sub>min</sub> grew less fast, then Lemma 1 would not be applicable for large <italic>n</italic> because &#x003B5; would eventually supersede &#x003B7;. However, if we assume that increasing <italic>n</italic> means adding more similarly-distributed data points to the dataset, the <italic>average</italic> entry in <bold>W</bold> does not change and thus all row sums of <bold>W</bold> also grow linearly in <italic>n</italic>, including <italic>d</italic><sub>min</sub> and the maximum row sum &#x02016;<bold>W</bold>&#x02016;<sub>&#x0221E;</sub>. A mathematical quantification of this observation is beyond the scope of this article, but in practice, the values for &#x003B7; and &#x003B5; can be approximated and monitored to give a-posteriori error bounds. One way to do this is by using (9) and approximating &#x02016;<italic>K</italic><sub>ERR</sub>&#x02016;<sub>&#x0221E;</sub> via (8), where the maximum can be discretized in a large number of randomly drawn sample points.</p>
<p>The accuracy of this approximation can be validated by explicitly computing the exact absolute row sum &#x02016;<bold>E</bold>&#x02016;<sub>&#x0221E;</sub> via</p>
<disp-formula id="E28"><label>(10)</label><mml:math id="M64"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>E</mml:mtext></mml:mstyle><mml:msub><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mrow><mml:munderover><mml:mrow><mml:msup><mml:mstyle mathsize='140%' displaystyle='true'><mml:mo>&#x02211;</mml:mo></mml:mstyle><mml:mtext>&#x0200B;</mml:mtext></mml:msup></mml:mrow><mml:mi>n</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:munderover><mml:mrow><mml:mo>|</mml:mo><mml:mrow><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>E</mml:mtext></mml:mstyle><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>e</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mo>|</mml:mo></mml:mrow></mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow></mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mrow><mml:munderover><mml:mrow><mml:msup><mml:mstyle mathsize='140%' displaystyle='true'><mml:mo>&#x02211;</mml:mo></mml:mstyle><mml:mtext>&#x0200B;</mml:mtext></mml:msup></mml:mrow><mml:mi>n</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:munderover><mml:mrow><mml:mo>|</mml:mo><mml:mrow><mml:msub><mml:mover accent='true'><mml:mtext>W</mml:mtext><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>E</mml:mtext></mml:mstyle></mml:msub><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>e</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>W</mml:mtext></mml:mstyle><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>e</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:mi>K</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mn>0</mml:mn></mml:mstyle><mml:mo stretchy='false'>)</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>e</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mo>|</mml:mo></mml:mrow></mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow></mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where |&#x000B7;| is applied elementwise, <bold>e</bold><sub><italic>i</italic></sub> denotes the <italic>i</italic>-th unit vector, and matrix-vector products with <inline-formula><mml:math id="M65"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:mi>K</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mn>0</mml:mn></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:math></inline-formula> are evaluated using Algorithm 1. The effort of computing (10) is <inline-formula><mml:math id="M66"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>. Equivalently, the true value for &#x02016;<bold>A</bold>&#x02212;<bold>A</bold><sub><bold>E</bold></sub>&#x02016;<sub>&#x0221E;</sub> can be computed via</p>
<disp-formula id="E29"><mml:math id="M67"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>A</mml:mtext></mml:mstyle><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>A</mml:mtext></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>E</mml:mtext></mml:mstyle></mml:msub><mml:msub><mml:mo>&#x02016;</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mrow><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</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:mrow><mml:mrow><mml:mo>|</mml:mo><mml:mrow><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>A</mml:mtext></mml:mstyle><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>e</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>A</mml:mtext></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>E</mml:mtext></mml:mstyle></mml:msub><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>e</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mo>|</mml:mo></mml:mrow></mml:mrow></mml:mstyle></mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
</sec>
</sec>
<sec id="s4">
<title>4. Krylov Subspace Methods and NFFT</title>
<p>The main contribution of this paper is the usage of NFFT-based fast summation for accelerating Krylov subspace methods, which are the state-of-the-art schemes for the solution of linear equation systems, eigenvalue problems, and more [<xref ref-type="bibr" rid="B28">28</xref>]. In the case of large dense matrices, the computational bottleneck is the setup of and multiplication with the system matrix itself. We will here exemplarily illustrate this for the Lanczos algorithm [<xref ref-type="bibr" rid="B29">29</xref>], which is the standard method for computation of a few dominating, i.e., largest, eigenvalues of a symmetric matrix <bold>A</bold> [<xref ref-type="bibr" rid="B19">19</xref>, <xref ref-type="bibr" rid="B30">30</xref>]. It is based on looking for an <bold>A</bold>-invariant subspace in the Krylov space</p>
<disp-formula id="E30"><mml:math id="M68"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">K</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:mo>,</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>r</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mtext>span</mml:mtext><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>r</mml:mtext></mml:mstyle><mml:mo>,</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>r</mml:mtext></mml:mstyle><mml:mo>,</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>r</mml:mtext></mml:mstyle><mml:mo>,</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>r</mml:mtext></mml:mstyle><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>r</mml:mtext></mml:mstyle></mml:mrow><mml:mo>}</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>This is achieved by iteratively constructing an orthonormal basis <bold>q</bold><sub>1</sub>, &#x02026;, <bold>q</bold><sub><italic>k</italic></sub> of this space in such a way that the matrix <inline-formula><mml:math id="M69"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> yields a tridiagonalization of <bold>A</bold>, i.e.,</p>
<disp-formula id="E31"><mml:math id="M70"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>T</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:mo>&#x022F1;</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x022F1;</mml:mo></mml:mtd><mml:mtd><mml:mo>&#x022F1;</mml:mo></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Such a matrix <bold>Q</bold><sub><italic>k</italic></sub> as well as the entries of <bold>T</bold><sub><italic>k</italic></sub> can be computed by the iteration</p>
<disp-formula id="E32"><mml:math id="M71"><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>r</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>r</mml:mtext></mml:mstyle><mml:mo>&#x02016;</mml:mo></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mtext>&#x000A0;&#x000A0;&#x000A0;</mml:mtext><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mtext>&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02200;</mml:mo><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo></mml:mrow></mml:math></disp-formula>
<p>where <inline-formula><mml:math id="M72"><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and &#x003B2;<sub><italic>k</italic>&#x0002B;1</sub> &#x0003D; &#x02016;<bold>Aq</bold><sub><italic>k</italic></sub>&#x02212;&#x003B1;<sub><italic>k</italic></sub><bold>q</bold><sub><italic>k</italic></sub>&#x02212;&#x003B2;<sub><italic>k</italic></sub><bold>q</bold><sub><italic>k</italic>&#x02212;1</sub>&#x02016;. The remarkable fact that this iteration produces orthonormal vectors is a consequence of the symmetry of <bold>A</bold>.</p>
<p>We now summarize the first <italic>k</italic> steps of the Lanczos process in the relation</p>
<disp-formula id="E33"><label>(11)</label><mml:math id="M73"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>T</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>e</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <bold>e</bold><sub><italic>j</italic></sub> denotes the <italic>j</italic>-th standard basis vector of the appropriate dimension. The eigenvalues and eigenvectors of the small matrix <bold>T</bold><sub><italic>k</italic></sub> are called the Ritz values and vectors, respectively, and can be computed efficiently. From <bold>T</bold><sub><italic>k</italic></sub><bold>w</bold> &#x0003D; &#x003BB;<bold>w</bold> we then obtain</p>
<disp-formula id="E34"><mml:math id="M74"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>w</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>T</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>w</mml:mtext></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>e</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mstyle mathvariant="bold"><mml:mtext>w</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:mi>&#x003BB;</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>w</mml:mtext></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>w</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>where <italic>w</italic><sub><italic>k</italic></sub> is the <italic>k</italic>-th component of the Ritz vector <bold>w</bold>. We finally see via</p>
<disp-formula id="E35"><mml:math id="M75"><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>w</mml:mtext></mml:mstyle><mml:mo>-</mml:mo><mml:mi>&#x003BB;</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>w</mml:mtext></mml:mstyle><mml:mo>&#x02016;</mml:mo><mml:mo>=</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>w</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>|</mml:mo><mml:mo>&#x02264;</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>|</mml:mo></mml:mrow></mml:math></disp-formula>
<p>that a small value |&#x003B2;<sub><italic>k</italic>&#x0002B;1</sub>| indicates that (&#x003BB;, <bold>Q</bold><sub><italic>k</italic></sub><bold>w</bold>) is a good approximation to an eigenpair of <bold>A</bold> and that the Krylov space is close to containing an <bold>A</bold>-invariant subspace. There are many more practical issues that make the implementation of the Lanczos process more efficient and robust. We do not discuss these points in detail but refer to Parlett [<xref ref-type="bibr" rid="B30">30</xref>] and Lehoucq et al. [<xref ref-type="bibr" rid="B22">22</xref>] for the details.</p>
<p>Additionally, we want to point out that the above procedure can also be used for the solution of linear systems of equations. Standard methods based on the Lanczos method are the conjugate gradients method [<xref ref-type="bibr" rid="B31">31</xref>] and the minimal residual method [<xref ref-type="bibr" rid="B32">32</xref>], which are tailored for the solution of linear systems of the form <bold>Ax</bold> &#x0003D; <bold>b</bold>. Note that such applications involving the graph Laplacian are commonly found in kernel based methods [<xref ref-type="bibr" rid="B33">33</xref>]. In the nonsymmetric case that comes up e.g., when considering <bold>L</bold><sub><italic>w</italic></sub>, we can employ the Arnoldi method [<xref ref-type="bibr" rid="B28">28</xref>], which relies on a similar iteration where <bold>T</bold><sub><italic>k</italic></sub> is replaced by an upper Hessenberg matrix.</p>
<p>One main contribution of this paper is the fact that by evaluating matrix-vector products via the NFFT-based Algorithms 1 or 2, Krylov subspace methods are still applicable for dense matrices that are too large to store, let alone apply, as long as they stem from the kernel structure of (3) or normalization of such a matrix. In our experiments, this method will be denoted as NFFT-based Lanczos method.</p>
<p>A detailed discussion of the effect of inexact matrix-vector products on Krylov-based approximations can be found in Simoncini and Szyld [<xref ref-type="bibr" rid="B34">34</xref>].</p>
</sec>
<sec id="s5">
<title>5. Alternative Eigenvalue Algorithm: The Nystr&#x000F6;m Method</title>
<sec>
<title>5.1. The Traditional Nystr&#x000F6;m Extension</title>
<p>The Nystr&#x000F6;m extension is currently used as a method of choice to compute eigenvalue approximations of kernel-based matrices that are too large to allow for direct eigenvalue computation. See e.g., Garcia-Cardona et al. [<xref ref-type="bibr" rid="B35">35</xref>] and Merkurjev et al. [<xref ref-type="bibr" rid="B36">36</xref>] for its applications in different settings. Originally introduced to the matrix computations context in Williams and Seeger [<xref ref-type="bibr" rid="B37">37</xref>], further improvements have been suggested in Fowlkes et al. [<xref ref-type="bibr" rid="B38">38</xref>] and Drineas and Mahoney [<xref ref-type="bibr" rid="B9">9</xref>] and its usage for classification problems has been proposed in Bertozzi and Flenner [<xref ref-type="bibr" rid="B7">7</xref>]. It is based on dividing the data points into a sample set <italic>X</italic> of <italic>L</italic> nodes and its complement <italic>Y</italic>. After permutation, the adjacency matrix <bold>W</bold> can be split into blocks</p>
<disp-formula id="E36"><mml:math id="M76"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>X</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>Y</mml:mi><mml:mi>Y</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>where the blocks <inline-formula><mml:math id="M77"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>X</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>L</mml:mi><mml:mo>&#x000D7;</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and <inline-formula><mml:math id="M78"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>Y</mml:mi><mml:mi>Y</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mi>L</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mi>L</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msup></mml:math></inline-formula> are the adjacency matrices of the canonical subgraphs with node sets <italic>X</italic> and <italic>Y</italic>, respectively, and the block <inline-formula><mml:math id="M79"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>L</mml:mi><mml:mo>&#x000D7;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mi>L</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msup></mml:math></inline-formula> contains the similarities between all combinations of nodes from <italic>X</italic> and <italic>Y</italic>.</p>
<p>The basic idea of the Nystr&#x000F6;m method is to compute only <bold>W</bold><sub><italic>XX</italic></sub> and <bold>W</bold><sub><italic>XY</italic></sub> explicitly, but not the remaining block <bold>W</bold><sub><italic>YY</italic></sub>. If <italic>L</italic> &#x0226A; <italic>n</italic>, the approach significantly decreases the required number of data point comparisons. Assuming that <bold>W</bold><sub><italic>XX</italic></sub> is regular, the method approximates <bold>W</bold> by</p>
<disp-formula id="E37"><label>(12)</label><mml:math id="M80"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle><mml:mo>&#x02248;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>X</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>X</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none none none none none none none none none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>X</mml:mi></mml:mrow></mml:msub></mml:mtd><mml:mtd><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:mtd><mml:mtd><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>]</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>which constitutes a rank-<italic>L</italic> approximation due to the size and regularity of <bold>W</bold><sub><italic>XX</italic></sub>. This formula is used once in approximating the degree matrix <bold>D</bold> by <bold>D</bold><sub><bold>E</bold></sub> &#x0003D; diag(<bold>W</bold><sub><bold>E</bold></sub><bold>1</bold>) and once in approximating the eigenvalues of <bold>A</bold> via the rank-<italic>L</italic> eigenvalue decomposition</p>
<disp-formula id="E39"><mml:math id="M82"><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow></mml:msub><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>V</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>L</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mo>&#x0039B;</mml:mo></mml:mstyle></mml:mrow><mml:mrow><mml:mi>L</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>V</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x0002A;</mml:mo></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
<p>This can be computed without having to set up the full matrix, e.g., by the technique described in Fowlke et al. [<xref ref-type="bibr" rid="B38">38</xref>] made up mainly of two singular value decompositions of (<italic>L</italic>&#x000D7;<italic>L</italic>)-sized matrices, which is technically only applicable if <bold>W</bold> is positive definite. Alternatively, we have achieved better results by computing the QR factorization <inline-formula><mml:math id="M83"><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>R</mml:mtext></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:msup><mml:mrow><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>X</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and the eigenvalue decomposition <inline-formula><mml:math id="M84"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>U</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>L</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mo>&#x0039B;</mml:mo></mml:mstyle></mml:mrow><mml:mrow><mml:mi>L</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>U</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>L</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>R</mml:mtext></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>R</mml:mtext></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>, leading to the eigenvector matrix <inline-formula><mml:math id="M85"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>V</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>L</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mo>^</mml:mo></mml:mover><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>U</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>L</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>. The arithmetic complexity of this algorithm can be easily confirmed to be <inline-formula><mml:math id="M86"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow></mml:math></inline-formula>(<italic>n L</italic><sup>2</sup>).</p>
<p>The eigenvalue accuracy depends strongly on the quality of the approximation</p>
<disp-formula id="E40"><mml:math id="M87"><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>Y</mml:mi><mml:mi>Y</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02248;</mml:mo><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
<p>Since the sample set <italic>X</italic> is a randomly chosen subset of the indices from 1, &#x02026;, <italic>n</italic>, its size <italic>L</italic> is the decisive method parameter and its choice is a nontrivial task. On the one hand, <italic>L</italic> needs to be small for the method to be efficient. On the other hand, a too small choice of <italic>L</italic> may cause extreme errors, especially because the approximation error in <bold>D</bold><sub><bold>E</bold></sub> propagates to the eigenvalue computation. In spite of the positivity of the diagonal of <bold>D</bold>, negative entries in <bold>D</bold><sub><bold>E</bold></sub> cannot be ruled out and are observed in practice. Hence imaginary entries may occur in <inline-formula><mml:math id="M88"><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>E</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msubsup></mml:math></inline-formula> and thus <bold>A</bold><sub><bold>E</bold></sub>, making the results extremely unreliable. This behavior follows the same structure as Lemma 1, however, we do not have a meaningful bound on <inline-formula><mml:math id="M89"><mml:mo>&#x02016;</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>Y</mml:mi><mml:mi>Y</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>W</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>X</mml:mi><mml:mi>Y</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x0221E;</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> that would guarantee favorable error behavior.</p>
</sec>
<sec>
<title>5.2. A NFFT-Based Accelerated Nystr&#x000F6;m-Gaussian Method</title>
<p>Another important contribution of this paper is the development of an improved Nystr&#x000F6;m method, which utilizes the NFFT-based fast summation from section 3. It is based on a slightly different algorithm that has been recently introduced as a Nystr&#x000F6;m method, cf.[<xref ref-type="bibr" rid="B39">39</xref>] and the references therein. Their basic idea is rewriting the traditional Nystr&#x000F6;m approximation as</p>
<disp-formula id="E41"><mml:math id="M90"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:mo>&#x02248;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:mstyle mathvariant="bold"><mml:mtext>Q</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></disp-formula>
<p>where <bold>Q</bold> &#x02208; &#x0211D;<sup><italic>n</italic>&#x000D7;<italic>L</italic></sup> is a matrix with orthogonal columns. If <bold>Q</bold> holds the first <italic>L</italic> columns of a permutation matrix, one obtains the traditional Nystr&#x000F6;m method from section 5.1. Inspired by similar randomized linear algebra algorithm such as randomized singular value decomposition, this choice of <bold>Q</bold> is replaced in Martinsson [<xref ref-type="bibr" rid="B39">39</xref>] by <bold>Q</bold> &#x0003D; orth(<bold>AG</bold>), where <bold>G</bold> &#x02208; &#x0211D;<sup><italic>n</italic>&#x000D7;<italic>L</italic></sup> is a Gaussian matrix with normally distributed random entries and orth denotes column-wise orthonormalization. Unfortunately, this setup requires 2<italic>L</italic> matrix-vector products with the full matrix <bold>A</bold>.</p>
<p>We now propose accelerating these matrix-vector products by computing <bold>AQ</bold> column-wise via the NFFT-based fast summation Algorithm 1 in order to avoid full matrix setup or slow direct matrix-vector products. In addition, we propose replacing the inverse (<bold>Q</bold><sup><italic>T</italic></sup><bold>AQ</bold>)<sup>&#x02212;1</sup> by a low-rank approximation based only on the <italic>M</italic> &#x02208; &#x02115; largest eigenvalues of <bold>Q</bold><sup><italic>T</italic></sup><bold>AQ</bold>. This way, a rank-<italic>M</italic> approximation of <bold>A</bold> is produced, where <italic>M</italic> may be the actual number of required eigenvalues or larger. The resulting method &#x0201C;Nystr&#x000F6;m-Gaussian-NFFT&#x0201D; is presented in Algorithm 3. Its arithmetic complexity is <inline-formula><mml:math id="M91"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow></mml:math></inline-formula>(<italic>n L</italic><sup>2</sup>). On the first glance, this arithmetic complexity seems to be identical to the one of the traditional Nystr&#x000F6;m method from section 5.1. However, as we observe in the numerical tests in section 6.1, we may choose the parameter <italic>L</italic> distinctly smaller for Algorithm 3, i.e., <italic>L</italic> &#x0007E; <italic>k</italic>, where <italic>k</italic> is the number of eigenvalues and eigenvectors. Then, the resulting arithmetic complexity is <inline-formula><mml:math id="M92"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow></mml:math></inline-formula>(<italic>n k</italic><sup>2</sup>).</p>
<table-wrap position="float">
<label>Algorithm 3</label>
<caption><p>NFFT-based accelerated Nystr&#x000F6;m-Gaussian method (&#x0201C;Nystr&#x000F6;m-Gaussian-NFFT&#x0201D;) for eigenvalue approximation <inline-formula><mml:math id="M205"><mml:msub><mml:mtext>V</mml:mtext><mml:mi>k</mml:mi></mml:msub><mml:msub><mml:mi>&#x0039B;</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:msubsup><mml:mtext>V</mml:mtext><mml:mi>k</mml:mi><mml:mo>&#x02217;</mml:mo></mml:msubsup><mml:mo>&#x02248;</mml:mo><mml:mtext>A</mml:mtext><mml:mo>:</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mtext>D</mml:mtext><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mtext>WD</mml:mtext><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula></p></caption>
<graphic xlink:href="fams-04-00061-i0003.tif"/>
</table-wrap>
</sec>
</sec>
<sec id="s6">
<title>6. Numerical Results</title>
<p>All our experiments are performed using <sc>Matlab</sc> implementations based on the NFFT3 library and <sc>Matlab</sc>&#x00027;s <monospace>eigs</monospace> function. A short example code can be found on the homepage of the authors<xref ref-type="fn" rid="fn0002"><sup>2</sup></xref>.</p>
<sec>
<title>6.1. Accuracy and Runtime of Eigenvalue Computations</title>
<p>We use the function <monospace>generateSpiralDataWithLabels.m</monospace><xref ref-type="fn" rid="fn0003"><sup>3</sup></xref> to generate varying sets of three-dimensional data. The data points are in the form of a spiral and we can specify the number of classes as well as the number of points per class. We generate data sets with 5 classes and equal numbers of points per class, which have a total number of data points <italic>n</italic> &#x02208; {2000, 5000, 10000, 20000, 50000, 100000}. For the generation, we use the default parameters <italic>h</italic> &#x0003D; 10 and <italic>r</italic> &#x0003D; 2 in <monospace>generateSpiralDataWithLabels.m</monospace>. For each <italic>n</italic>, we generate 5 random spiral data sets. In Figure <xref ref-type="fig" rid="F2">2A</xref>, we visualize an example data set with <italic>n</italic> &#x0003D; 2, 000 total points. For the adjacency matrix <bold>W</bold>, we set the scaling parameter &#x003C3; &#x0003D; 3.5. Using the NFFT-based Lanczos method from section 4, we compute the 10 largest eigenvalues and the corresponding eigenvectors of the matrix <bold>A</bold>: &#x0003D; <bold>D</bold><sup>&#x02212;1/2</sup><bold>WD</bold><sup>&#x02212;1/2</sup> for each data set. We consider three different parameter setups for the NFFT in Algorithm 1, achieving different accuracies. We set the bandwidth <italic>N</italic> &#x0003D; 16 and the window cut-off parameter <italic>m</italic> &#x0003D; 2 in setup &#x00023;1, <italic>N</italic> &#x0003D; 32 and <italic>m</italic> &#x0003D; 4 in setup &#x00023;2, as well as <italic>N</italic> &#x0003D; 64 and <italic>m</italic> &#x0003D; 7 in setup &#x00023;3. For all three setups, we use &#x003B5;<sub>B</sub> &#x0003D; 0. For comparison, we also apply the Nystr&#x000F6;m method from section 5.1, where we perform 10 repetitions for each data set, since the method uses random sub-sampling in order to obtain a rank-<italic>L</italic> approximation of the adjacency matrix <bold>W</bold>. We consider two different Nystr&#x000F6;m setups with rank <italic>L</italic> &#x02208; {<italic>n</italic>/10, <italic>n</italic>/4}. Moreover, we use the hybrid Nystr&#x000F6;m-Gaussian-NFFT method from Algorithm 3 in section 5.2 with <italic>L</italic> &#x02208; {20, 50} Gaussian columns, parameter <italic>M</italic> &#x0003D; 10 as well as fast summation parameters corresponding to setup &#x00023;2, where we perform 10 repetitions for each data set. Additionally, we compute the eigenvalues and eigenvectors by a direct method, which applies the Lanczos method using full matrix-vector products with the adjacency matrix <bold>W</bold>. For the Nystr&#x000F6;m method from section 5.1 and the direct computation method, we only run tests for a total number of data points <italic>n</italic> &#x02208; {2000, 5000, 10000, 20000} due to long runtimes.</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p>Illustration of spiral and crescent-fullmoon data sets. <bold>(A)</bold> Spiral example with <italic>n</italic> = 2,000 points. <bold>(B)</bold> Crescent-fullmoon example with <italic>n</italic> = 100,000 points.</p></caption>
<graphic xlink:href="fams-04-00061-g0002.tif"/>
</fig>
<p>In Figure <xref ref-type="fig" rid="F3">3</xref>, we visualize the results of the test runs. We show the minimum, average and maximum of the maximum eigenvalue errors in Figure <xref ref-type="fig" rid="F3">3A</xref>. For this, we first determine the maximum eigenvalue errors</p>
<disp-formula id="E42"><label>(13)</label><mml:math id="M93"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo class="qopname">max</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo class="qopname">&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mn>10</mml:mn></mml:mrow></mml:munder></mml:mstyle><mml:mo>|</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003BB;</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mrow><mml:mi>&#x003BB;</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mtext>(direct)</mml:mtext></mml:mrow></mml:msubsup><mml:mo>|</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>for each test run, where &#x003BB;<sub><italic>j</italic></sub> denotes the <italic>j</italic>-th eigenvalue computed by the method under consideration and <inline-formula><mml:math id="M94"><mml:msubsup><mml:mrow><mml:mi>&#x003BB;</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mstyle class="text"><mml:mtext>(direct)</mml:mtext></mml:mstyle></mml:mrow></mml:msubsup></mml:math></inline-formula> the one computed by a direct method using full matrix-vector products with the matrix <bold>A</bold>. Then, for fixed total number of data points <italic>n</italic> and fixed parameter setup, we compute the minimum, average and maximum of (13), where the minimum, average and maximum are computed using 5 instances of (13) for the NFFT-based Lanczos method and 5&#x000B7;10 instances of (13) for the Nystr&#x000F6;m-based methods. We observe that the averages of the maximum eigenvalue errors (13) are above 10<sup>&#x02212;2</sup> for the two considered parameter choices of the Nystr&#x000F6;m method from section 5.1, even when the rank <italic>L</italic> is chosen as a quarter of the matrix size <italic>n</italic>. Moreover, the minima and maxima of (13) differ distinctly from the averages. In particular, the accuracies may vary strongly across different Nystr&#x000F6;m runs on an identical data set. For the NFFT-based Lanczos method, each minimum, average and maximum of the maximum eigenvalue errors (13) only differs slightly from one another. The maximum eigenvalue errors (13) are around 10<sup>&#x02212;4</sup> to 10<sup>&#x02212;3</sup> for parameter setup &#x00023;1, around 10<sup>&#x02212;10</sup> to 10<sup>&#x02212;9</sup> for setup &#x00023;2, and below 10<sup>&#x02212;14</sup> for setup &#x00023;3. For the hybrid Nystr&#x000F6;m-Gaussian-NFFT method, which internally uses 2<italic>L</italic> many NFFT-based fast summations with parameter setup &#x00023;2, the maximum eigenvalue errors (13) are around 10<sup>&#x02212;3</sup> to 10<sup>&#x02212;2</sup> for parameter <italic>L</italic> &#x0003D; 20 and around 10<sup>&#x02212;5</sup> to 10<sup>&#x02212;4</sup> for <italic>L</italic> &#x0003D; 50. This means that the observed maximum eigenvalue errors (13) are distinctly smaller compared to the ones of the traditional Nystr&#x000F6;m method, and the errors for parameter <italic>L</italic> &#x0003D; 50 are slightly smaller than the ones of the NFFT-based Lanczos method with parameter setup &#x00023;1.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p>Comparison of accuracies and runtimes for spiral data sets. <bold>(A)</bold> Comparison of eigenvalue accuracies. <bold>(B)</bold> Comparison of eigenvector accuracies. <bold>(C)</bold> Residuals for <italic>n</italic> = 20,000. <bold>(D)</bold> Comparison of runtimes.</p></caption>
<graphic xlink:href="fams-04-00061-g0003.tif"/>
</fig>
<p>In Figure <xref ref-type="fig" rid="F3">3B</xref>, we depict the minimum, average and maximum of the maximum residual norms (14) for each total number of data points <italic>n</italic>. We compute these numbers by first determining the maximum residual norms</p>
<disp-formula id="E43"><label>(14)</label><mml:math id="M95"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo class="qopname">max</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo class="qopname">&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mn>10</mml:mn></mml:mrow></mml:munder></mml:mstyle><mml:mo>&#x02016;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>A</mml:mtext></mml:mstyle><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003BB;</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>for each test run, where &#x003BB;<sub><italic>j</italic></sub> denotes the <italic>j</italic>-th eigenvalue of <bold>A</bold> and <bold>v</bold><sub><italic>j</italic></sub> the corresponding eigenvector. Then, for fixed <italic>n</italic> and fixed parameter setup, we compute the minimum, average and maximum of (14). We observe that the averages of the maximum residual norms (14) are above 10<sup>&#x02212;1</sup> for the considered parameter choices of the Nystr&#x000F6;m method, even when the rank <italic>L</italic> is chosen as a quarter of the matrix size <italic>n</italic>. Moreover, the minima and maxima of the maximum residual norms (14) differ distinctly from the averages. Especially, the accuracies may vary strongly across different Nystr&#x000F6;m runs on an identical data set. For the NFFT-based Lanczos method, each minimum, average and maximum of (14) only differs slightly from one another. The maximum residual norms (14) are around 10<sup>&#x02212;4</sup> to 10<sup>&#x02212;3</sup> for parameter setup &#x00023;1, around 10<sup>&#x02212;8</sup> for setup &#x00023;2, and around 10<sup>&#x02212;15</sup> to 10<sup>&#x02212;13</sup> for setup &#x00023;3. For the hybrid Nystr&#x000F6;m-Gaussian-NFFT method, maximum residual norms (14) are around 10<sup>&#x02212;2</sup> for parameter <italic>L</italic> &#x0003D; 20 and around 10<sup>&#x02212;4</sup> to 10<sup>&#x02212;3</sup> for <italic>L</italic> &#x0003D; 50. In the latter case, the errors are slightly larger than the ones of the NFFT-based Lanczos method with parameter setup &#x00023;1 for <italic>n</italic> &#x02208; {2, 000, 5, 000, 10, 000, 20, 000} data points and slightly smaller for <italic>n</italic> &#x02208; {50, 000, 100, 000}.</p>
<p>Additionally, in Figure <xref ref-type="fig" rid="F3">3C</xref>, we investigate the average and maximum of the maximum residual norms (14) for each fixed eigenvalue &#x003BB;<sub><italic>j</italic></sub> for <italic>n</italic> &#x0003D; 20, 000 data points. For Nystr&#x000F6;m <italic>L</italic> &#x0003D; <italic>n</italic>/10, we observe that the residual norms belonging to the first eigenvalue are distinctly larger than for the remaining eigenvalues. In general, the observed maximal residual norms (14) vary similarly for each eigenvalue. For the NFFT-based Lanczos method with parameter setup &#x00023;2 and &#x00023;3, the maximum residual norms (14) of the tail eigenvalues are slightly smaller than of the leading eigenvalues, which is not the case for the parameter setup &#x00023;1 as well as for the results of the hybrid Nystr&#x000F6;m-Gaussian-NFFT method.</p>
<p>In Figure <xref ref-type="fig" rid="F3">3D</xref>, we show the average and maximum runtimes of the different methods and parameter choices in dependence of the total number of data points <italic>n</italic>. The runtimes were determined on a computer with Intel Core i7 CPU 970 (3.20 GHz) using one thread. We remark that the NFFT supports OpenMP, cf.[<xref ref-type="bibr" rid="B40">40</xref>], but we restricted all time measurements to 1 thread for better comparison. We observe that the runtimes of the traditional Nystr&#x000F6;m method grow approximately like &#x0007E;<italic>n</italic><sup>3</sup>, and the runtimes of the direct computation method for the eigenvalues grow approximately like &#x0007E;<italic>n</italic><sup>2</sup>. Moreover, the slopes of the runtime graphs of the NFFT-based Lanczos method are distinctly smaller and the runtimes grow approximately like &#x0007E;<italic>n</italic>. Depending on the parameter choices, the NFFT-based Lanczos method is faster than the Nystr&#x000F6;m method once the total number of data points <italic>n</italic> is above 2,000&#x02013;10,000. The hybrid Nystr&#x000F6;m-Gaussian-NFFT method with parameter <italic>L</italic> &#x0003D; 20 is slightly slower than the NFFT-based Lanczos method with setup &#x00023;2. For the parameter <italic>L</italic> &#x0003D; 50 the method is slower by a factor of approximately 2.5. In both cases, the runtimes grow approximately like &#x0007E;<italic>n</italic>. The runtimes of the direct method were the highest ones in most cases. For the tests, we precomputed the diagonal entries of the matrix <bold>D</bold><sup>&#x02212;1/2</sup> but we computed the entries of the weight matrix <bold>W</bold> again for each matrix-vector multiplication with the matrix <bold>A</bold>. Alternatively, one could store the whole matrix <bold>A</bold> &#x02208; &#x0211D;<sup><italic>n</italic>&#x000D7;<italic>n</italic></sup> for small problem sizes <italic>n</italic> and this would have reduced the runtimes of the direct method to 1/20. However, then we would have to store at least <italic>n</italic>(<italic>n</italic>&#x02212;1)/2 values, which would already require about 10 GB RAM for <italic>n</italic> &#x0003D; 50, 000 and double precision.</p>
<p>For comparison, we also applied the FIGTree method from Morariu et al. [<xref ref-type="bibr" rid="B14">14</xref>] to our testcases, and we denote the obtained results by &#x0201C;FIGTree-Lanczos&#x0201D; in Figure <xref ref-type="fig" rid="F3">3</xref>. The FIGTree accuracy parameter &#x003F5; was chosen &#x02208; {5&#x000B7;10<sup>&#x02212;3</sup>, 2&#x000B7;10<sup>&#x02212;6</sup>, 10<sup>&#x02212;10</sup>} such that the resulting residual norms (14) in Figure <xref ref-type="fig" rid="F3">3B</xref> approximately match those of the NFFT-based Lanczos method for setup &#x00023;1,&#x00023;2,&#x00023;3. We observe that the obtained eigenvalue accuracies in Figure <xref ref-type="fig" rid="F3">3A</xref> are similar for &#x003F5; &#x0003D; 5&#x000B7;10<sup>&#x02212;3</sup> and 10<sup>&#x02212;10</sup> to the ones of the NFFT-based Lanczos method for setup &#x00023;1 and &#x00023;3, respectively. For <italic>n</italic> &#x02265; 5, 000 data points and FIGTree accuracy parameter &#x003F5; &#x0003D; 2&#x000B7;10<sup>&#x02212;6</sup>, we observe for our testcase that the obtained eigenvalue accuracies are lower by about two order of magnitudes compared to the NFFT-based Lanczos method with setup &#x00023;2. When looking at the obtained runtimes, we observe that &#x0201C;FIGTree-Lanczos&#x0201D; requires approximately 4 times to 7 times the runtime of the corresponding NFFT-based Lanczos method with comparable eigenvector accuracy in most cases.</p>
</sec>
<sec>
<title>6.2. Applications</title>
<p>In the following, we will showcase the effect of the improved accuracy on popular data science methods that utilize the graph Laplacian matrix. We will compare how the methods perform if the eigenvectors are computed with the NFFT-based Lanczos method or the traditional Nystr&#x000F6;m extension.</p>
<sec>
<title>6.2.1. Spectral Clustering</title>
<p>Spectral clustering is an increasingly popular technique [<xref ref-type="bibr" rid="B1">1</xref>] and we briefly illustrate the method proposed in Ng et al. [<xref ref-type="bibr" rid="B41">41</xref>]. The basis of their algorithm is a truncated eigenapproximation <inline-formula><mml:math id="M96"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>V</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>V</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> with <inline-formula><mml:math id="M97"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>V</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x000D7;</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:math></inline-formula> which is an approximation based on the smallest eigenvalues and eigenvectors of the graph Laplacian. Now the rows of <bold>V</bold><sub><italic>k</italic></sub> are normalized to obtain a matrix <bold>Y</bold><sub><italic>k</italic></sub>. The normalized rows are then divided into a fixed number of disjoint clusters by a standard k-means algorithm.</p>
<p>Here, we apply spectral clustering to an image segmentation problem. The original image of size 533 &#x000D7; 800 is depicted in Figure <xref ref-type="fig" rid="F5">5A</xref>. We construct a graph Laplacian where each pixel corresponds to a node in the graph and the distance measure is the distance between the values in all three color channels, such that each vertex <inline-formula><mml:math id="M98"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mn>255</mml:mn></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. Correspondingly, the graph Laplacian would be a dense matrix of size 426,400 &#x000D7; 426,400. We set the scaling parameter &#x003C3; &#x0003D; 90. Figure <xref ref-type="fig" rid="F4">4</xref> shows the first ten eigenvalues of the matrix <bold>A</bold>.</p>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p>First 10 eigenvalues of <bold>A</bold> using Gaussian weights and scaling parameter &#x003C3; &#x0003D; 90 for Figure <xref ref-type="fig" rid="F5">5A</xref>.</p></caption>
<graphic xlink:href="fams-04-00061-g0004.tif"/>
</fig>
<fig id="F5" position="float">
<label>Figure 5</label>
<caption><p>Results of image segmentation (533 &#x000D7; 800 &#x0003D; 426, 400 pixels) via spectral clustering and k-means using the NFFT-based Lanczos method from section 4 and the Nystr&#x000F6;m method from section 5.1. &#x0201C;Failed run&#x0201D; in <bold>(E)</bold> means segmentation differences of more than 20% compared to the results obtained when applying <monospace>eigs</monospace> on the full matrix <bold>A</bold>. <bold>(A)</bold> Original image (Image source: TU Chemnitz/Wolfgang Thieme); <bold>(B)</bold> <italic>k</italic> = 2 classes, NFFT-Lanczos; <bold>(C)</bold> <italic>k</italic> = 4 classes, NFFT-Lanczos; <bold>(D)</bold> <italic>k</italic> = 4 classes, Nystr&#x000F6;m; <bold>(E)</bold> <italic>k</italic> = 4 classes, Nystr&#x000F6;m (&#x0201C;failed&#x0201D; run); <bold>(F)</bold> differences between <bold>(C)</bold> and <bold>(E)</bold>.</p></caption>
<graphic xlink:href="fams-04-00061-g0005.tif"/>
</fig>
<p>For obtaining reference results, we use the Matlab function <monospace>eigs</monospace> on the full matrix <bold>A</bold> computing 4 eigenvectors and this required more than 31 h using up to 32 threads on a computer with Intel Xeon E7-4880 CPUs (2.50 GHz), using more than 500 CPU hours in total. Next, we applied the NFFT-based Lanczos method from section 4 with parameters <italic>N</italic> &#x0003D; 16, <italic>m</italic> &#x0003D; 2, <italic>p</italic> &#x0003D; 2, and &#x003B5;<sub>B</sub> &#x0003D; 1/8 for the eigenvector computations. We show the results in Figures <xref ref-type="fig" rid="F5">5B,C</xref> for <italic>k</italic> &#x0003D; 2 and <italic>k</italic> &#x0003D; 4 classes, respectively. The segmented images look satisfactory. The main features of the image are preserved and large areas of similar color are correctly assigned to the same cluster, while there are only small &#x0201C;noisy&#x0201D; areas. Compared to the segmented image from the direct computations, we have approximately 0.1 % differences (467 out of 426,400) in the class assignments in the case of <italic>k</italic> &#x0003D; 4 classes. For the runtimes, we measure approximately 25 s for the NFFT-based Lanczos method and 18 seconds for the k-means algorithm on a computer with Intel Core i7 CPU 970 (3.20 GHz) using one thread.</p>
<p>Additionally, we ran the Nystr&#x000F6;m method 100 times with parameter <italic>L</italic> &#x0003D; 250. Here the runtimes were approximately 60 s on average without the runtime for the clustering. We applied the k-means algorithm for <italic>k</italic> &#x0003D; 4 classes, which required approximately 22 s on average. We observed that in 79 of the 100 test runs of Nystr&#x000F6;m followed by k-means, the images appear to be very close to the ones obtained when applying <monospace>eigs</monospace> on the full matrix <bold>A</bold>, i.e., the differences are &#x0003C;2%. In Figure <xref ref-type="fig" rid="F5">5D</xref>, we visualize the results of a corresponding test run. However, in 13 of the 100 test runs, the Nystr&#x000F6;m method returned eigenvectors which caused segmentation differences of more than 20% with such &#x0201C;noisy&#x0201D; images that we consider these as &#x0201C;failed&#x0201D; runs. See Figure <xref ref-type="fig" rid="F5">5E</xref> for one example with approximately 25% differences. The differences between Figures <xref ref-type="fig" rid="F5">5C,E</xref> are shown as a black and white picture in Figure <xref ref-type="fig" rid="F5">5F</xref>.</p>
<p>Moreover, we tested increasing the parameter <italic>L</italic> to 500. Then, the run times increased to approximately 152 s on average. When applying the k-means algorithm to the obtained eigenvectors, the results improved. The differences compared to the reference image segmentation are &#x0003C;2% in 85 of the 100 test runs and larger than 20% in 9 test runs.</p>
</sec>
<sec>
<title>6.2.2. Semi-Supervised Learning by a Phase Field Method</title>
<p>We here want to state an exemplary method that relies heavily on a number of eigenvectors of the graph Laplacian. It was proposed by Bertozzi and Flenner [<xref ref-type="bibr" rid="B7">7</xref>] and corresponds to a semi-supervised learning (SSL) problem. Suppose we have a graph-based dataset as before where each vertex is assigned to one of <italic>C</italic> classes. A training set of <italic>s</italic> random sample vertices from each class is set up. For the case of <italic>C</italic> &#x0003D; 2 classes, a training vector <bold>f</bold> &#x02208; &#x0211D;<sup><italic>n</italic></sup> is set up with entries &#x02212;1 for training nodes from one class, 1 for training nodes from the other class, and 0 for nodes that do not belong to the training data. The task of SSL is to use <bold>f</bold> to find a classification vector <bold>u</bold> &#x02208; &#x0211D;<sup><italic>n</italic></sup>. The sign of its entries is then used to predict each node&#x00027;s assigned class.</p>
<p>One successful approach computes <bold>u</bold> as the end point of the trajectory described by the Allen&#x02013;Cahn equation</p>
<disp-formula id="E44"><mml:math id="M99"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle><mml:mo>:</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mi>&#x0221E;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02192;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mtext>&#x000A0;&#x000A0;</mml:mtext><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>t</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>L</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac><mml:msup><mml:mrow><mml:mi>&#x003C8;</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold"><mml:mo>&#x003A9;</mml:mo></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>f</mml:mtext></mml:mstyle><mml:mo>-</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mtext>&#x000A0;&#x000A0;</mml:mtext><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>f</mml:mtext></mml:mstyle></mml:mrow></mml:math></disp-formula>
<p>(see [<xref ref-type="bibr" rid="B42">42</xref>, <xref ref-type="bibr" rid="B43">43</xref>] for details). Here &#x003C8;(<italic>u</italic>) &#x0003D; (<italic>u</italic><sup>2</sup> &#x02212; 1)<sup>2</sup> is the double-well potential, which we understand to be applied component-wise, and <bold>&#x003A9;</bold> denotes a diagonal matrix with entries &#x003A9;<sub><italic>ii</italic></sub> &#x0003D; &#x003C9;<sub>0</sub> &#x0003E; 0 if vertex <italic>i</italic> belongs to the training data and &#x003A9;<sub><italic>ii</italic></sub> &#x0003D; 0 otherwise. To discretize this ODE we will not introduce an index for the temporal discretization but rather assume that all values <bold>u</bold> are evaluated at the new time-point whereas <inline-formula><mml:math id="M100"><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> indicates the previous time-point. We then obtain</p>
<disp-formula id="E45"><mml:math id="M101"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle><mml:mo>-</mml:mo><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B5;</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>L</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow></mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:mi>c</mml:mi><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac><mml:msup><mml:mrow><mml:mi>&#x003C8;</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0002B;</mml:mo><mml:mi>c</mml:mi><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold"><mml:mo>&#x003A9;</mml:mo></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>f</mml:mtext></mml:mstyle><mml:mo>-</mml:mo><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <bold>u</bold> is a vector defined on the graph on which we base the final classification decision. Here, <italic>c</italic> &#x0003E; 0 is a positive parameter for the convexity splitting technique [<xref ref-type="bibr" rid="B7">7</xref>]. For a more detailed discussion of how to set these parameters we refer to Bertozzi and Flenner [<xref ref-type="bibr" rid="B7">7</xref>] and Bosch et al. [<xref ref-type="bibr" rid="B44">44</xref>]. We now use the <italic>k</italic> computed eigenvalues and eigenvectors (&#x003BB;<sub><italic>j</italic></sub>, <bold>v</bold><sub><italic>j</italic></sub>) of <bold>L</bold><sub><italic>s</italic></sub> such that we can write <inline-formula><mml:math id="M102"><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:munderover><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and from this we get</p>
<disp-formula id="E46"><mml:math id="M103"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mover accent='true'><mml:mi>u</mml:mi><mml:mo>&#x000AF;</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mfrac><mml:mo>+</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mi>&#x003B5;</mml:mi><mml:msub><mml:mi>&#x003BB;</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mi>&#x003B5;</mml:mi></mml:mfrac><mml:msubsup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>&#x000A0;v</mml:mtext></mml:mstyle><mml:mi>j</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:mi>&#x003C8;</mml:mi><mml:mo>&#x02032;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:mover accent='true'><mml:mtext>u</mml:mtext><mml:mo>&#x000AF;</mml:mo></mml:mover><mml:mo stretchy='false'>)</mml:mo><mml:mo>+</mml:mo><mml:mi>c</mml:mi><mml:msub><mml:mover accent='true'><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>u</mml:mtext></mml:mstyle><mml:mo>&#x000AF;</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>j</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>&#x003A9;</mml:mi></mml:mstyle><mml:mo stretchy='false'>(</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>f</mml:mi></mml:mstyle><mml:mo>&#x02212;</mml:mo><mml:mover accent='true'><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mtext>u</mml:mtext></mml:mstyle><mml:mo>&#x000AF;</mml:mo></mml:mover><mml:mo stretchy='false'>)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>This equation can be solved to obtain the new coefficients <italic>u</italic><sub><italic>j</italic></sub> from the old coefficients &#x0016B;<sub><italic>j</italic></sub>. After a sufficient number of time steps, <bold>u</bold> will converge against a stable solution.</p>
<p>We apply this method to the same spiral data set as seen in section 6.1, again with &#x003C3; &#x0003D; 3.5 but this time only with <italic>n</italic> &#x0003D; 100, 000. The data points have been generated by a multivariate normal distribution around five center points, and the true label of each vertex has been set to the center point that is closest to it. We computed the eigenvectors to the <italic>k</italic> &#x0003D; 5 smallest eigenvalues of the Laplacian; once by the NFFT-based Lanczos method with <italic>n</italic> &#x0003D; 32, <italic>m</italic> &#x0003D; 4, and &#x003B5;<sub><italic>B</italic></sub> &#x0003D; 0, and once with the traditional Nystr&#x000F6;m method with <italic>L</italic> &#x0003D; 1, 000 where only 5 columns of <bold>V</bold><sub><italic>L</italic></sub> are used. We then applied the described method with &#x003C4; &#x0003D; 0.1, &#x003B5; &#x0003D; 10, &#x003C9;<sub>0</sub> &#x0003D; 10, 000, and <inline-formula><mml:math id="M104"><mml:mi>c</mml:mi><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi>&#x003B5;</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003C9;</mml:mi></mml:mrow><mml:mrow><mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>. The iteration terminated if the squared relative change in <bold>u</bold> was less than 1e-10. We repeat this process for 50 instances of the spiral dataset and sample sizes <italic>s</italic> &#x02208; {1, 2, 3, 4, 5, 7, 10}.</p>
<p>Figure <xref ref-type="fig" rid="F6">6</xref> depicts the average accuracy results. We conclude that in this example, the increased eigenvector quality achieved by the NFFT-based method yields an average accuracy boost of approximately 0.5&#x02013;1.5% points, as well as the worst result being significantly less bad. On a computer with Intel Core i7 CPU 4770 (3.40 GHz), the runtimes were approximately 8 s for the NFFT-based Lanczos method, 27 s for the Nystr&#x000F6;m method, and less than a second for the solution of the Allen&#x02013;Cahn equation, which almost always converged after only three time steps.</p>
<fig id="F6" position="float">
<label>Figure 6</label>
<caption><p>Comparison of average classification rates with the phase field method on relabeled spiral data sets.</p></caption>
<graphic xlink:href="fams-04-00061-g0006.tif"/>
</fig>
</sec>
<sec>
<title>6.2.3. Semi-Supervised Learning by a Kernel Method</title>
<p>In addition to the phase field method, we employ a second semi-supervised learning technique used in Zhou et al. [<xref ref-type="bibr" rid="B45">45</xref>] and Hein et al. [<xref ref-type="bibr" rid="B46">46</xref>] for SSL problems with only two classes. Based on a training vector <bold>f</bold> holding 1, &#x02212;1, or 0 just as in the previous section, a similar <bold>u</bold> is obtained by minimizing the function</p>
<disp-formula id="E47"><label>(15)</label><mml:math id="M105"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mrow><mml:munder><mml:mrow><mml:mstyle><mml:mtext>arg&#x0000A0;min</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mstyle mathvariant="bold"><mml:mstyle><mml:mtext>u</mml:mtext></mml:mstyle></mml:mstyle><mml:mo>&#x002208;</mml:mo><mml:msup><mml:mi>&#x00211D;</mml:mi><mml:mi>n</mml:mi></mml:msup></mml:mrow></mml:munder><mml:mstyle><mml:mtext>&#x002009;</mml:mtext></mml:mstyle><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:msubsup><mml:mrow><mml:mrow><mml:mo>&#x002016;</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mstyle><mml:mtext>u</mml:mtext></mml:mstyle></mml:mstyle><mml:mo>&#x002212;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mstyle><mml:mtext>f</mml:mtext></mml:mstyle></mml:mstyle></mml:mrow><mml:mo>&#x002016;</mml:mo></mml:mrow></mml:mrow><mml:mn>2</mml:mn><mml:mn>2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:mfrac><mml:mi>&#x0003B2;</mml:mi><mml:mn>2</mml:mn></mml:mfrac><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mstyle><mml:mtext>&#x0000A0;u</mml:mtext></mml:mstyle></mml:mstyle></mml:mrow><mml:mi>T</mml:mi></mml:msup><mml:msub><mml:mstyle mathvariant="bold"><mml:mstyle><mml:mtext>L</mml:mtext></mml:mstyle></mml:mstyle><mml:mi>s</mml:mi></mml:msub><mml:mstyle mathvariant="bold"><mml:mstyle><mml:mtext>u</mml:mtext></mml:mstyle></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mstyle><mml:mtext>&#x0000A0;&#x0000A0;&#x0000A0;&#x0000A0;</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mn>15</mml:mn><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where &#x003B2; can be understood as a regularization parameter. For the solution of this minimization problem, we only have to solve the equation</p>
<disp-formula id="E48"><label>(16)</label><mml:math id="M106"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtext>I</mml:mtext><mml:mo>+</mml:mo><mml:mi>&#x003B2;</mml:mi><mml:msub><mml:mtext>L</mml:mtext><mml:mi>s</mml:mi></mml:msub></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mtext>u</mml:mtext><mml:mo>=</mml:mo><mml:mtext>f</mml:mtext><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <bold>I</bold> is the identity matrix. Similar systems arise naturally in scattered data interpolation [<xref ref-type="bibr" rid="B47">47</xref>]. We run numerical tests using the <monospace>crescentfullmoon.m</monospace><xref ref-type="fn" rid="fn0004"><sup>4</sup></xref> data set with <italic>n</italic> &#x0003D; 100, 000 data points and parameters <monospace>r1</monospace>=5, <monospace>r2</monospace>=5, <monospace>r3</monospace>=8. As illustrated in Figure <xref ref-type="fig" rid="F2">2B</xref>, the set is divided into two classes of points in the full moon and the crescent, distributed in a 1-to-3 ratio. We generate 5 random instances of the data set, and for each instance we run 10 repetitions with randomly chosen training data, where we consider <italic>s</italic> &#x02208; {1, 2, 5, 10, 25} known samples per class. For the adjacency matrix <bold>W</bold>, we set the scaling parameter &#x003C3; &#x0003D; 0.1. The tests are run with regularization parameter &#x003B2; &#x02208; {10<sup>3</sup>, 3&#x000B7;10<sup>3</sup>, 10<sup>4</sup>, 3&#x000B7;10<sup>4</sup>, 10<sup>5</sup>}. We solve each system (16) using the CG algorithm with tolerance parameter 10<sup>&#x02212;4</sup> and a maximum number of 1,000 iterations. For the fast matrix-vector multiplications with the matrix <bold>L</bold><sub><italic>s</italic></sub>, we use the NFFT-based fast summation in Algorithm 1 with parameters <italic>N</italic> &#x0003D; 512, <italic>m</italic> &#x0003D; 3, &#x003B5;<sub>B</sub> &#x0003D; 0.</p>
<p>In Figure <xref ref-type="fig" rid="F7">7</xref>, we visualize the average and maximum misclassification rate of the 5&#x000B7;10 test runs for each fixed <italic>s</italic> and &#x003B2;. In the left plot, we show the misclassification rate in dependence of the number of samples <italic>s</italic> per class for the different regularization parameters &#x003B2;. We observe in general that the misclassification rates decrease for increasing <italic>s</italic>. The lowest rate is achieved for <italic>s</italic> &#x0003D; 25 samples per class and &#x003B2; &#x0003D; 10<sup>4</sup>, where the average and maximum misclassification rate are 0.0012 and 0.0036, respectively. In the right plot, we depict the misclassification rate in dependence of the regularization parameter &#x003B2; for fixed number of samples <italic>s</italic> per class. For <italic>s</italic> &#x02208; {1, 2, 5}, the average misclassification rates decline for increasing &#x003B2; until &#x003B2; &#x0003D; 3&#x000B7;10<sup>4</sup> and grow again for &#x003B2; &#x0003D; 10<sup>5</sup>. For <italic>s</italic> &#x02208; {10, 25}, the average misclassification rates decline for increasing &#x003B2; until &#x003B2; &#x0003D; 10<sup>4</sup> and grow again afterwards. We remark that in all test runs, the maximum number of CG iterations was 536 and the maximum runtime for solving (16) was approximately 151 s on a computer with Intel Core i7 CPU 970 (3.20 GHz) using one thread.</p>
<fig id="F7" position="float">
<label>Figure 7</label>
<caption><p>Misclassification rate solving (16) using the CG algorithm and Algorithm 1 for the <monospace>crescentfullmoon.m</monospace> data set with <italic>n</italic> &#x0003D; 100, 000 data points.</p></caption>
<graphic xlink:href="fams-04-00061-g0007.tif"/>
</fig>
<p>Additionally, we used the NFFT-based Lanczos method from section 4 in order to approximate the matrix <bold>A</bold>: &#x0003D; <bold>D</bold><sup>&#x02212;1/2</sup><bold>WD</bold><sup>&#x02212;1/2</sup> by a truncated eigenapproximation <inline-formula><mml:math id="M107"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>V</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>D</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>V</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> with <inline-formula><mml:math id="M108"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>V</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> and this allows for computing the matrix-vector products in (16) in a fast way for fixed small <italic>k</italic>. Using <italic>k</italic> &#x0003D; 10 eigenvalues and eigenvectors, we achieve similar results as those shown in Figure <xref ref-type="fig" rid="F7">7</xref>. The computation of the eigenapproximation required up to 6 min on a computer with Intel Core i7 CPU 970 (3.20 GHz) using one thread. The maximum runtime for solving (16) was approximately 0.15 s.</p>
<p>Alternatively, we applied the Nystr&#x000F6;m method from section 5.1 with parameter <italic>L</italic> &#x0003D; 5, 000 to obtain a truncated eigenapproximation, where the corresponding computation required more than 3 h for each eigenapproximation. However, the eigenvalues were not computed correctly in our tests. This was due to the matrix block <bold>W</bold><sub><italic>XX</italic></sub> in Equation (12) being ill-conditioned. Consequently the CG method aborted in the first iteration and the output could not be used for classification.</p>
<p>In order to illustrate the flexibility of the NFFT-based fast summation, we also apply Algorithm 1 to a non-Gaussian weight function <italic>w</italic> in (2). Here, we consider the &#x0201C;Laplacian RBF kernel&#x0201D; <italic>K</italic>(<bold>y</bold>): &#x0003D; exp(&#x02212;&#x02016;<bold>y</bold>&#x02016;/&#x003C3;), such that the weight matrix is constructed as</p>
<disp-formula id="E49"><label>(17)</label><mml:math id="M109"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi>j</mml:mi><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>w</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mtable columnalign='left'><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:mi>exp</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mrow><mml:msub><mml:mtext>v</mml:mtext><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mtext>v</mml:mtext><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mo>/</mml:mo><mml:mi>&#x003C3;</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mtext>&#x000A0;if&#x000A0;</mml:mtext><mml:mi>j</mml:mi><mml:mo>&#x02260;</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mn>0</mml:mn></mml:mtd><mml:mtd columnalign='left'><mml:mrow><mml:mtext>&#x000A0;otherwise</mml:mtext><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>In our numerical tests, we set the shape parameter &#x003C3; &#x0003D; 0.05 and we visualize the test results in Figure <xref ref-type="fig" rid="F8">8</xref>. We observe that the obtained misclassification rates are similar to the ones in Figure <xref ref-type="fig" rid="F7">7</xref>, where the Gaussian kernel was used. For some parameter settings, the misclassification rates are slightly better, for other ones slightly worse.</p>
<fig id="F8" position="float">
<label>Figure 8</label>
<caption><p>Misclassification rate solving (16) using the CG algorithm and Algorithm 1 for the <monospace>crescentfullmoon.m</monospace> data set with <italic>n</italic> &#x0003D; 100, 000 data points and Laplacian RBF kernel (17).</p></caption>
<graphic xlink:href="fams-04-00061-g0008.tif"/>
</fig>
</sec>
</sec>
<sec>
<title>6.3. Kernel Ridge Regression</title>
<p>In this section we show that our approach can be applied to the problem of kernel ridge regression, which has a similar flavor to the problem from the previous section. We here illustrate that our method is very flexible since other than just Gaussian kernels can be used for the fast evaluation of matrix-vector products. The starting point is a simple linear regression problem via the minimization of</p>
<disp-formula id="E50"><label>(18)</label><mml:math id="M110"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:munder><mml:mrow><mml:mi>arg</mml:mi><mml:mi>min</mml:mi></mml:mrow><mml:mrow><mml:mtext>u</mml:mtext><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mi>&#x0211D;</mml:mi><mml:mi>d</mml:mi></mml:msup></mml:mrow></mml:munder><mml:mtext>&#x000A0;</mml:mtext><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac><mml:mtext>&#x000A0;</mml:mtext><mml:msubsup><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mrow><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>f</mml:mi></mml:mstyle><mml:mo>&#x02212;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>X</mml:mi></mml:mstyle><mml:mtext>u</mml:mtext></mml:mrow><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mn>2</mml:mn><mml:mn>2</mml:mn></mml:msubsup><mml:mtext>&#x000A0;</mml:mtext><mml:mo>+</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mfrac><mml:mi>&#x003B2;</mml:mi><mml:mn>2</mml:mn></mml:mfrac><mml:mtext>&#x000A0;</mml:mtext><mml:msubsup><mml:mrow><mml:mo>&#x02016;</mml:mo><mml:mtext>u</mml:mtext><mml:mo>&#x02016;</mml:mo></mml:mrow><mml:mn>2</mml:mn><mml:mn>2</mml:mn></mml:msubsup><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <bold>X</bold> &#x02208; &#x0211D;<sup><italic>n</italic>&#x000D7;<italic>d</italic></sup> is a design matrix holding training feature vectors <inline-formula><mml:math id="M111"><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x0211D;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> in its rows, i.e., <inline-formula><mml:math id="M112"><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, and <bold>f</bold> &#x02208; &#x0211D;<sup><italic>n</italic></sup> is a given response vector. The solution <bold>u</bold> to this problem can then be used in a linear model to predict a response for any new point <bold>x</bold> &#x02208; &#x0211D;<sup><italic>d</italic></sup> as <italic>F</italic>(<bold>x</bold>) &#x0003D; <bold>u</bold><sup><italic>T</italic></sup><bold>x</bold>.</p>
<p>The well-known solution formula can be rearranged using the Sherman&#x02013;Morrison&#x02013;Woodbury formula to obtain</p>
<disp-formula id="E51"><mml:math id="M113"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B2;</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>f</mml:mtext></mml:mstyle></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>f</mml:mtext></mml:mstyle></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003B2;</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>f</mml:mtext></mml:mstyle></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003B2;</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>&#x003B2;</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>-</mml:mo><mml:msup><mml:mrow><mml:mi>&#x003B2;</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>f</mml:mtext></mml:mstyle></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B2;</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>f</mml:mtext></mml:mstyle><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Using this formula, we can introduce the dual variable <bold>&#x003B1;</bold> &#x0003D; (<bold>XX</bold><sup><italic>T</italic></sup> &#x0002B; &#x003B2;<bold>I</bold>)<sup>&#x02212;1</sup> <bold>f</bold> and rewrite the predicted response of a new point <bold>x</bold> as</p>
<disp-formula id="E52"><mml:math id="M114"><mml:mrow><mml:mi>F</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>u</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>X</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mo>&#x003B1;</mml:mo></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mo>&#x003B1;</mml:mo></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
<p>An idea for increasing the flexibility of this method is replacing expressions <inline-formula><mml:math id="M115"><mml:msubsup><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>T</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> with <italic>K</italic>(<bold>x</bold><sub><italic>i</italic></sub>, <bold>x</bold><sub><italic>j</italic></sub>) where <italic>K</italic>:&#x0211D;<sup><italic>d</italic></sup>&#x000D7;&#x0211D;<sup><italic>d</italic></sup> &#x02192; &#x0211D; is an arbitrary kernel function [<xref ref-type="bibr" rid="B48">48</xref>]. This leads to replacing <bold>XX</bold><sup><italic>T</italic></sup> with the Gram matrix <bold>K</bold> with entries</p>
<disp-formula id="E53"><mml:math id="M116"><mml:mtable columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>K</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>K</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mtext>&#x000A0;&#x000A0;</mml:mtext><mml:mo>&#x02200;</mml:mo><mml:mtext>&#x000A0;</mml:mtext><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:mi>n</mml:mi><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Consequently, the dual variable becomes <inline-formula><mml:math id="M117"><mml:mstyle mathvariant="bold"><mml:mo>&#x003B1;</mml:mo></mml:mstyle><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>K</mml:mtext></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B2;</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>f</mml:mtext></mml:mstyle></mml:math></inline-formula> and we obtain the kernel-based prediction function</p>
<disp-formula id="E54"><mml:math id="M118"><mml:mrow><mml:mi>F</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mo>&#x003B1;</mml:mo></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mstyle mathvariant="bold"><mml:mtext>x</mml:mtext></mml:mstyle></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
<p>For more details we refer to Robert [<xref ref-type="bibr" rid="B48">48</xref>]. It is easily seen that the main effort of this algorithm goes into the computation of the coefficient vector <inline-formula><mml:math id="M119"><mml:mstyle mathvariant="bold"><mml:mo>&#x003B1;</mml:mo></mml:mstyle><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>K</mml:mtext></mml:mstyle><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003B2;</mml:mi><mml:msub><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>I</mml:mtext></mml:mstyle></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msup><mml:mstyle mathvariant="bold"><mml:mtext>f</mml:mtext></mml:mstyle><mml:mo>.</mml:mo></mml:math></inline-formula> Note that this is were we again use the NFFT-based matrix vector products in combination with the preconditioned CG method as the matrix <bold>K</bold> &#x0002B; &#x003B2;<bold>I</bold><sub><italic>n</italic></sub> is positive definite and amenable to being treated using the NFFT for a variety of different kernel functions. In Figure <xref ref-type="fig" rid="F9">9</xref> we illustrate the results when kernel ridge regression is used with two different kernels, namely the Gaussian and the inverse multiquadric kernel.</p>
<fig id="F9" position="float">
<label>Figure 9</label>
<caption><p>Results of kernel ridge regression applied using an inverse multiquadric kernel <bold>(A)</bold> and a Gaussian kernel <bold>(B)</bold>. The blue line indicates the decision boundary for the classification of new points.</p></caption>
<graphic xlink:href="fams-04-00061-g0009.tif"/>
</fig>
</sec>
</sec>
<sec sec-type="conclusions" id="s7">
<title>7. Conclusion</title>
<p>In this work, we have successfully applied the computational power of NFFT-based fast summation to core tools of data science. This was possible due to the nature of the fully connected graph Laplacian and the fact that many algorithms&#x02014;most notably the Lanczos method for eigenvalue computation&#x02014;only require matrix-vector products with the Laplacian matrix. By using Fourier coefficients to approximate the Gaussian kernel, we use Algorithm 1 to compute strong approximations of the matrix-vector product in <inline-formula><mml:math id="M120"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> complexity without storing or setting up the full matrix, as opposed to the full matrix&#x00027;s <inline-formula><mml:math id="M121"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> storage, setup, and application complexity.</p>
<p>For eigenvalue and eigenvector computations, we have discussed the current alternative method of choice in the Nystr&#x000F6;m extension and developed a hybrid method that allows the basic Nystr&#x000F6;m idea to benefit from NFFT-based fast matrix-vector products. In our numerical experiments, we found that the Nystr&#x000F6;m-Gaussian-NFFT method achieved much better eigenvalue accuracy than the traditional Nystr&#x000F6;m extension even for a significantly smaller parameter <italic>L</italic>, but was in turn outperformed by the NFFT-based Lanczos method.</p>
<p>In strongly eigenvector-dependent applications like in section 6.2.2, the higher accuracy of the NFFT-based Lanczos method directly leads to better classification results. In some other applications, however, it is hard to predict if better eigenvector accuracy distinctly improves the results. For instance in section 6.2.1, the traditional Nystr&#x000F6;m extension still achieved good image clusterings on average with small parameter <italic>L</italic> despite its rather inaccurate eigenvectors. Here, the NFFT-based Lanczos method still has very good selling points in its greatly improved runtime as well as its consistency, while the traditional Nystr&#x000F6;m tends to &#x0201C;fail&#x0201D; in some test runs.</p>
</sec>
<sec id="s8">
<title>Author Contributions</title>
<p>All authors listed have made a substantial, direct and intellectual contribution to the work, and approved it for publication.</p>
<sec>
<title>Conflict of Interest Statement</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
</sec>
</body>
<back>
<ref-list>
<title>References</title>
<ref id="B1">
<label>1.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>von Luxburg</surname> <given-names>U</given-names></name></person-group>. <article-title>A tutorial on spectral clustering</article-title>. <source>Stat Comput.</source> (<year>2007</year>) <volume>17</volume>:<fpage>395</fpage>&#x02013;<lpage>416</lpage>. <pub-id pub-id-type="doi">10.1007/s11222-007-9033-z</pub-id></citation></ref>
<ref id="B2">
<label>2.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Shuman</surname> <given-names>DI</given-names></name> <name><surname>Narang</surname> <given-names>SK</given-names></name> <name><surname>Frossard</surname> <given-names>P</given-names></name> <name><surname>Ortega</surname> <given-names>A</given-names></name> <name><surname>Vandergheynst</surname> <given-names>P</given-names></name></person-group>. <article-title>The emerging field of signal processing on graphs: extending high-dimensional data analysis to networks and other irregular domains</article-title>. <source>IEEE Signal Process Mag.</source> (<year>2013</year>) <volume>30</volume>:<fpage>83</fpage>&#x02013;<lpage>98</lpage>. <pub-id pub-id-type="doi">10.1109/MSP.2012.2235192</pub-id></citation></ref>
<ref id="B3">
<label>3.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Belkin</surname> <given-names>M</given-names></name> <name><surname>Niyogi</surname> <given-names>P</given-names></name></person-group>. <article-title>Laplacian eigenmaps and spectral techniques for embedding and clustering</article-title>. In: <source>Advances in Neural Information Processing Systems 14</source> (<publisher-loc>Vancouver, BC</publisher-loc>). (<year>2002</year>). p. <fpage>585</fpage>&#x02013;<lpage>91</lpage>.</citation></ref>
<ref id="B4">
<label>4.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Belkin</surname> <given-names>M</given-names></name> <name><surname>Niyogi</surname> <given-names>P</given-names></name></person-group>. <article-title>Laplacian eigenmaps for dimensionality reduction and data representation</article-title>. <source>Neural Comput.</source> (<year>2003</year>) <volume>15</volume>:<fpage>1373</fpage>&#x02013;<lpage>96</lpage>. <pub-id pub-id-type="doi">10.1162/089976603321780317</pub-id></citation></ref>
<ref id="B5">
<label>5.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Henaff</surname> <given-names>M</given-names></name> <name><surname>Bruna</surname> <given-names>J</given-names></name> <name><surname>LeCun</surname> <given-names>Y</given-names></name></person-group>. <article-title>Deep convolutional networks on graph-structured data</article-title>. <source>arXiv preprint.</source> (<year>2015</year>).</citation></ref>
<ref id="B6">
<label>6.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bertozzi</surname> <given-names>AL</given-names></name> <name><surname>Esedoglu</surname> <given-names>S</given-names></name> <name><surname>Gillette</surname> <given-names>A</given-names></name></person-group>. <article-title>Inpainting of binary images using the Cahn&#x02013;Hilliard equation</article-title>. <source>IEEE Trans Image Process.</source> (<year>2007</year>) <volume>16</volume>:<fpage>285</fpage>&#x02013;<lpage>91</lpage>. <pub-id pub-id-type="doi">10.1109/TIP.2006.887728</pub-id><pub-id pub-id-type="pmid">17283787</pub-id></citation></ref>
<ref id="B7">
<label>7.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bertozzi</surname> <given-names>AL</given-names></name> <name><surname>Flenner</surname> <given-names>A</given-names></name></person-group>. <article-title>Diffuse interface models on graphs for classification of high dimensional data</article-title>. <source>Multiscale Model Simul.</source> (<year>2012</year>) <volume>10</volume>:<fpage>1090</fpage>&#x02013;<lpage>118</lpage>. <pub-id pub-id-type="doi">10.1137/11083109X</pub-id></citation></ref>
<ref id="B8">
<label>8.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Baglama</surname> <given-names>J</given-names></name> <name><surname>Reichel</surname> <given-names>L</given-names></name></person-group>. <article-title>Augmented implicitly restarted Lanczos bidiagonalization methods</article-title>. <source>SIAM J Sci Comput.</source> (<year>2005</year>) <volume>27</volume>:<fpage>19</fpage>&#x02013;<lpage>42</lpage>. <pub-id pub-id-type="doi">10.1137/04060593X</pub-id></citation></ref>
<ref id="B9">
<label>9.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Drineas</surname> <given-names>P</given-names></name> <name><surname>Mahoney</surname> <given-names>MW</given-names></name></person-group>. <article-title>On the Nystr&#x000F6;m method for approximating a Gram matrix for improved kernel-based learning</article-title>. <source>J Mach Learn Res.</source> (<year>2005</year>) <volume>6</volume>:<fpage>2153</fpage>&#x02013;<lpage>75</lpage>.</citation></ref>
<ref id="B10">
<label>10.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Liberty</surname> <given-names>E</given-names></name> <name><surname>Woolfe</surname> <given-names>F</given-names></name> <name><surname>Martinsson</surname> <given-names>PG</given-names></name> <name><surname>Rokhlin</surname> <given-names>V</given-names></name> <name><surname>Tygert</surname> <given-names>M</given-names></name></person-group>. <article-title>Randomized algorithms for the low-rank approximation of matrices</article-title>. <source>Proc Natl Acad Sci USA.</source> (<year>2007</year>) <volume>104</volume>:<fpage>20167</fpage>&#x02013;<lpage>72</lpage>. <pub-id pub-id-type="doi">10.1073/pnas.0709640104</pub-id><pub-id pub-id-type="pmid">18056803</pub-id></citation></ref>
<ref id="B11">
<label>11.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Potts</surname> <given-names>D</given-names></name> <name><surname>Steidl</surname> <given-names>G</given-names></name></person-group>. <article-title>Fast Summation at nonequispaced knots by NFFTs</article-title>. <source>SIAM J Sci Comput.</source> (<year>2003</year>) <volume>24</volume>:<fpage>2013</fpage>&#x02013;<lpage>37</lpage>. <pub-id pub-id-type="doi">10.1137/S1064827502400984</pub-id></citation></ref>
<ref id="B12">
<label>12.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Potts</surname> <given-names>D</given-names></name> <name><surname>Steidl</surname> <given-names>G</given-names></name> <name><surname>Nieslony</surname> <given-names>A</given-names></name></person-group>. <article-title>Fast convolution with radial kernels at nonequispaced knots</article-title>. <source>Numer Math.</source> (<year>2004</year>) <volume>98</volume>:<fpage>329</fpage>&#x02013;<lpage>51</lpage>. <pub-id pub-id-type="doi">10.1007/s00211-004-0538-5</pub-id></citation></ref>
<ref id="B13">
<label>13.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Keiner</surname> <given-names>J</given-names></name> <name><surname>Kunis</surname> <given-names>S</given-names></name> <name><surname>Potts</surname> <given-names>D</given-names></name></person-group>. <article-title>Using NFFT3 - a software library for various nonequispaced fast fourier transforms</article-title>. <source>ACM Trans Math Softw.</source> (<year>2009</year>) <volume>36</volume>:<fpage>19.1</fpage>&#x02013;<lpage>19.30</lpage>. <pub-id pub-id-type="doi">10.1145/1555386.1555388</pub-id></citation></ref>
<ref id="B14">
<label>14.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Morariu</surname> <given-names>VI</given-names></name> <name><surname>Srinivasan</surname> <given-names>BV</given-names></name> <name><surname>Raykar</surname> <given-names>VC</given-names></name> <name><surname>Duraiswami</surname> <given-names>R</given-names></name> <name><surname>Davis</surname> <given-names>LS</given-names></name></person-group>. <article-title>Automatic online tuning for fast Gaussian summation</article-title>. In: <source>Advances in Neural Information Processing Systems 21</source>. <publisher-loc>Vancouver, BC</publisher-loc>: <publisher-name>Curran Associates, Inc</publisher-name>. (<year>2009</year>). p. <fpage>1113</fpage>&#x02013;<lpage>20</lpage>.</citation></ref>
<ref id="B15">
<label>15.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Yang</surname> <given-names>C</given-names></name> <name><surname>Duraiswami</surname> <given-names>R</given-names></name> <name><surname>Gumerov</surname> <given-names>NA</given-names></name> <name><surname>Davis</surname> <given-names>L</given-names></name></person-group>. <article-title>Improved fast gauss transform and efficient kernel density estimation</article-title>. In: <source>Proceedings of the Ninth IEEE International Conference on Computer Vision</source> (<publisher-loc>Nice</publisher-loc>). (<year>2003</year>). p. <fpage>464</fpage>.</citation></ref>
<ref id="B16">
<label>16.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Chung</surname> <given-names>FRK</given-names></name></person-group>. <article-title>Spectral graph theory</article-title>, in <source>Vol. 92 of CBMS Regional Conference Series in Mathematics.</source> <publisher-loc>Providence, RI</publisher-loc>: <publisher-name>Amer. Math. Soc.</publisher-name> (<year>1997</year>).</citation></ref>
<ref id="B17">
<label>17.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Saad</surname> <given-names>Y</given-names></name> <name><surname>Schultz</surname> <given-names>MH</given-names></name></person-group>. <article-title>GMRES: a generalized minimal residual algorithm for solving nonsymmetric linear systems</article-title>. <source>SIAM J Sci Stat Comput.</source> (<year>1986</year>) <volume>7</volume>:<fpage>856</fpage>&#x02013;<lpage>69</lpage>.</citation></ref>
<ref id="B18">
<label>18.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Zelnik-Manor</surname> <given-names>L</given-names></name> <name><surname>Perona</surname> <given-names>P</given-names></name></person-group>. <article-title>Self-tuning spectral clustering</article-title>. In: <source>Advances in Neural Information Processing Systems 17.</source> <publisher-loc>Vancouver</publisher-loc>: <publisher-name>MIT Press</publisher-name> (<year>2004</year>). p. <fpage>1601</fpage>&#x02013;<lpage>8</lpage>.</citation></ref>
<ref id="B19">
<label>19.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Golub</surname> <given-names>GH</given-names></name> <name><surname>Van Loan</surname> <given-names>CF</given-names></name></person-group>. <source>Matrix Computations, 3rd Edn.</source> Johns Hopkins Studies in the Mathematical Sciences. <publisher-loc>Baltimore, MD</publisher-loc>: <publisher-name>Johns Hopkins University Press</publisher-name> (<year>1996</year>).</citation></ref>
<ref id="B20">
<label>20.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Stewart</surname> <given-names>G</given-names></name></person-group>. <article-title>A Krylov-Schur Algorithm for large eigenproblems</article-title>. <source>SIAM J Matrix Anal Appl.</source> (<year>2001</year>) <volume>23</volume>:<fpage>601</fpage>&#x02013;<lpage>14</lpage>. <pub-id pub-id-type="doi">10.1137/S0895479800371529</pub-id></citation></ref>
<ref id="B21">
<label>21.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Sleijpen</surname> <given-names>GL</given-names></name> <name><surname>Van der Vorst</surname> <given-names>HA</given-names></name></person-group>. <article-title>A Jacobi&#x02013;Davidson iteration method for linear eigenvalue problems</article-title>. <source>SIAM Rev.</source> (<year>2000</year>) <volume>42</volume>:<fpage>267</fpage>&#x02013;<lpage>93</lpage>. <pub-id pub-id-type="doi">10.1137/S0036144599363084</pub-id></citation></ref>
<ref id="B22">
<label>22.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Lehoucq</surname> <given-names>RB</given-names></name> <name><surname>Sorensen</surname> <given-names>DC</given-names></name> <name><surname>Yang</surname> <given-names>C</given-names></name></person-group>. <source>ARPACK Users&#x00027; Guide: Solution of Large-Scale Eigenvalue Problems With Implicitly Restarted Arnoldi Methods</source>. <publisher-loc>Philadelphia, PA</publisher-loc>: <publisher-name>SIAM</publisher-name> (<year>1998</year>).</citation></ref>
<ref id="B23">
<label>23.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Romano</surname> <given-names>Y</given-names></name> <name><surname>Elad</surname> <given-names>M</given-names></name> <name><surname>Milanfar</surname> <given-names>P</given-names></name></person-group>. <article-title>The little engine that could: Regularization by denoising (RED)</article-title>. <source>SIAM J Imaging Sci.</source> (<year>2017</year>) <volume>10</volume>:<fpage>1804</fpage>&#x02013;<lpage>44</lpage>. <pub-id pub-id-type="doi">10.1137/16M1102884</pub-id></citation></ref>
<ref id="B24">
<label>24.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Spielman</surname> <given-names>DA</given-names></name> <name><surname>Teng</surname> <given-names>SH</given-names></name></person-group>. <article-title>Nearly-linear time algorithms for graph partitioning, graph sparsification, and solving linear systems</article-title>. In: <source>Proceedings of the Thirty-Sixth Annual ACM Symposium on Theory of Computing</source> (<publisher-loc>Chicago, IL</publisher-loc>) (<year>2004</year>). p. <fpage>81</fpage>&#x02013;<lpage>90</lpage>.</citation></ref>
<ref id="B25">
<label>25.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Gilboa</surname> <given-names>G</given-names></name> <name><surname>Osher</surname> <given-names>S</given-names></name></person-group>. <article-title>Nonlocal operators with applications to image processing</article-title>. <source>Multiscale Model Simul.</source> (<year>2008</year>) <volume>7</volume>:<fpage>1005</fpage>&#x02013;<lpage>28</lpage>. <pub-id pub-id-type="doi">10.1137/070698592</pub-id></citation></ref>
<ref id="B26">
<label>26.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kunis</surname> <given-names>S</given-names></name> <name><surname>Potts</surname> <given-names>D</given-names></name> <name><surname>Steidl</surname> <given-names>G</given-names></name></person-group>. <article-title>Fast Gauss transform with complex parameters using NFFTs</article-title>. <source>J Numer Math.</source> (<year>2006</year>) <volume>14</volume>:<fpage>295</fpage>&#x02013;<lpage>303</lpage>. <pub-id pub-id-type="doi">10.1163/156939506779874626</pub-id></citation></ref>
<ref id="B27">
<label>27.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Nestler</surname> <given-names>F</given-names></name></person-group>. <article-title>Automated parameter tuning based on RMS errors for nonequispaced FFTs</article-title>. <source>Adv Comput Math.</source> (<year>2016</year>) <volume>42</volume>:<fpage>889</fpage>&#x02013;<lpage>919</lpage>. <pub-id pub-id-type="doi">10.1007/s10444-015-9446-8</pub-id></citation></ref>
<ref id="B28">
<label>28.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Saad</surname> <given-names>Y</given-names></name></person-group>. <source>Iterative Methods for Sparse Linear Systems.</source> <publisher-loc>Philadelphia, PA</publisher-loc>: <publisher-name>SIAM</publisher-name> (<year>2003</year>).</citation></ref>
<ref id="B29">
<label>29.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lanczos</surname> <given-names>C</given-names></name></person-group>. <article-title>An iteration method for the solution of the eigenvalue problem of linear differential and integral operators</article-title>. <source>J Res Nat Bur Stand.</source> (<year>1950</year>) <volume>45</volume>:<fpage>255</fpage>&#x02013;<lpage>82</lpage>.</citation></ref>
<ref id="B30">
<label>30.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Parlett</surname> <given-names>BN</given-names></name></person-group>. <source>The Symmetric Eigenvalue Problem. Vol. 20 of Classics in Applied Mathematics.</source> <publisher-loc>Philadelphia, PA</publisher-loc>: <publisher-name>SIAM</publisher-name> (<year>1998</year>).</citation></ref>
<ref id="B31">
<label>31.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hestenes</surname> <given-names>MR</given-names></name> <name><surname>Stiefel</surname> <given-names>E</given-names></name></person-group>. <article-title>Methods of conjugate gradients for solving linear systems</article-title>. <source>J Res Nat Bur Stand.</source> (<year>1952</year>) <volume>49</volume>:<fpage>409</fpage>&#x02013;<lpage>36</lpage>.</citation></ref>
<ref id="B32">
<label>32.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Paige</surname> <given-names>CC</given-names></name> <name><surname>Saunders</surname> <given-names>MA</given-names></name></person-group>. <article-title>Solutions of sparse indefinite systems of linear equations</article-title>. <source>SIAM J Numer Anal.</source> (<year>1975</year>) <volume>12</volume>:<fpage>617</fpage>&#x02013;<lpage>29</lpage>.</citation></ref>
<ref id="B33">
<label>33.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Bishop</surname> <given-names>CM</given-names></name></person-group>. <source>Pattern Recognition and Machine Learning</source>. <publisher-loc>New York, NY</publisher-loc>: <publisher-name>Springer</publisher-name> (<year>2006</year>).</citation></ref>
<ref id="B34">
<label>34.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Simoncini</surname> <given-names>V</given-names></name> <name><surname>Szyld</surname> <given-names>DB</given-names></name></person-group>. <article-title>Theory of inexact Krylov subspace methods and applications to scientific computing</article-title>. <source>SIAM J Sci Comput.</source> (<year>2003</year>) <volume>25</volume>:<fpage>454</fpage>&#x02013;<lpage>77</lpage>. <pub-id pub-id-type="doi">10.1137/S1064827502406415</pub-id></citation></ref>
<ref id="B35">
<label>35.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Garcia-Cardona</surname> <given-names>C</given-names></name> <name><surname>Merkurjev</surname> <given-names>E</given-names></name> <name><surname>Bertozzi</surname> <given-names>AL</given-names></name> <name><surname>Flenner</surname> <given-names>A</given-names></name> <name><surname>Percus</surname> <given-names>AG</given-names></name></person-group>. <article-title>Multiclass data segmentation Using diffuse interface methods on graphs</article-title>. <source>IEEE Trans Pattern Anal Mach Intell.</source> (<year>2014</year>) <volume>36</volume>:<fpage>1600</fpage>&#x02013;<lpage>13</lpage>. <pub-id pub-id-type="doi">10.1109/TPAMI.2014.2300478</pub-id><pub-id pub-id-type="pmid">26353341</pub-id></citation></ref>
<ref id="B36">
<label>36.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Merkurjev</surname> <given-names>E</given-names></name> <name><surname>Kostic</surname> <given-names>T</given-names></name> <name><surname>Bertozzi</surname> <given-names>AL</given-names></name></person-group>. <article-title>An MBO scheme on graphs for classification and image processing</article-title>. <source>SIAM J Imaging Sci.</source> (<year>2013</year>) <volume>6</volume>:<fpage>1903</fpage>&#x02013;<lpage>30</lpage>. <pub-id pub-id-type="doi">10.1137/120886935</pub-id></citation></ref>
<ref id="B37">
<label>37.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Williams</surname> <given-names>C</given-names></name> <name><surname>Seeger</surname> <given-names>M</given-names></name></person-group>. <article-title>Using the Nystr&#x000F6;m method to speed up kernel machines</article-title>. In: <source>Advances in Neural Information Processing Systems 13.</source> <publisher-loc>Denver, CO</publisher-loc>: <publisher-name>MIT Press</publisher-name> (<year>2001</year>). p. <fpage>682</fpage>&#x02013;<lpage>8</lpage>.</citation></ref>
<ref id="B38">
<label>38.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fowlkes</surname> <given-names>C</given-names></name> <name><surname>Belongie</surname> <given-names>S</given-names></name> <name><surname>Chung</surname> <given-names>F</given-names></name> <name><surname>Malik</surname> <given-names>J</given-names></name></person-group>. <article-title>Spectral grouping using the Nystr&#x000F6;m method</article-title>. <source>IEEE Trans Pattern Anal Mach Intell.</source> (<year>2004</year>) <volume>26</volume>:<fpage>214</fpage>&#x02013;<lpage>25</lpage>. <pub-id pub-id-type="doi">10.1109/TPAMI.2004.1262185</pub-id><pub-id pub-id-type="pmid">15376896</pub-id></citation></ref>
<ref id="B39">
<label>39.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Martinsson</surname> <given-names>PG</given-names></name></person-group>. <article-title>Randomized methods for matrix computations</article-title>. <source>arXiv [Preprint]</source> (<year>2018</year>).</citation></ref>
<ref id="B40">
<label>40.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Volkmer</surname> <given-names>T</given-names></name></person-group>. <source>OpenMP Parallelization in the NFFT Software Library.</source> Preprint 2012-07, <publisher-name>Faculty of Mathematics, Technische Universit&#x000E4;t Chemnitz</publisher-name> (<year>2012</year>).</citation></ref>
<ref id="B41">
<label>41.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Ng</surname> <given-names>AY</given-names></name> <name><surname>Jordan</surname> <given-names>MI</given-names></name> <name><surname>Weiss</surname> <given-names>Y</given-names></name></person-group>. <article-title>On spectral clustering: analysis and an algorithm</article-title>. In: <source>Advances in Neural Information Processing Systems 14</source> (<publisher-loc>Vancouver, BC</publisher-loc>). (<year>2002</year>). p. <fpage>849</fpage>&#x02013;<lpage>56</lpage>.</citation></ref>
<ref id="B42">
<label>42.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>van Gennip</surname> <given-names>Y</given-names></name> <name><surname>Guillen</surname> <given-names>N</given-names></name> <name><surname>Osting</surname> <given-names>B</given-names></name> <name><surname>Bertozzi</surname> <given-names>AL</given-names></name></person-group>. <article-title>Mean curvature, threshold dynamics, and phase field theory on finite graphs</article-title>. <source>Milan J Math.</source> (<year>2014</year>) <volume>82</volume>:<fpage>3</fpage>&#x02013;<lpage>65</lpage>. <pub-id pub-id-type="doi">10.1007/s00032-014-0216-8</pub-id></citation></ref>
<ref id="B43">
<label>43.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Luo</surname> <given-names>X</given-names></name> <name><surname>Bertozzi</surname> <given-names>AL</given-names></name></person-group>. <article-title>Convergence of the graph allen&#x02013;cahn scheme</article-title>. <source>J Stat Phys.</source> (<year>2017</year>) <volume>167</volume>:<fpage>934</fpage>&#x02013;<lpage>58</lpage>. <pub-id pub-id-type="doi">10.1007/s10955-017-1772-4</pub-id></citation></ref>
<ref id="B44">
<label>44.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Bosch</surname> <given-names>J</given-names></name> <name><surname>Klamt</surname> <given-names>S</given-names></name> <name><surname>Stoll</surname> <given-names>M</given-names></name></person-group>. <article-title>Generalizing diffuse interface methods on graphs: non-smooth potentials and hypergraphs</article-title>. <source>SIAM J Appl Math.</source> (<year>2018</year>) <volume>78</volume>:<fpage>1350</fpage>&#x02013;<lpage>77</lpage>. <pub-id pub-id-type="doi">10.1137/17M1117835</pub-id></citation></ref>
<ref id="B45">
<label>45.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Zhou</surname> <given-names>D</given-names></name> <name><surname>Bousquet</surname> <given-names>O</given-names></name> <name><surname>Lal</surname> <given-names>TN</given-names></name> <name><surname>Weston</surname> <given-names>J</given-names></name> <name><surname>Sch&#x000F6;lkopf</surname> <given-names>B</given-names></name></person-group>. <article-title>Learning with local and global consistency</article-title>. In: <source>Advances in Neural Information Processing Systems 16</source> (<publisher-loc>Vancouver, BC</publisher-loc>). (<year>2003</year>).</citation></ref>
<ref id="B46">
<label>46.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Hein</surname> <given-names>M</given-names></name> <name><surname>Setzer</surname> <given-names>S</given-names></name> <name><surname>Jost</surname> <given-names>L</given-names></name> <name><surname>Rangapuram</surname> <given-names>SS</given-names></name></person-group>. <article-title>The total variation on hypergraphs &#x02013; Learning on hypergraphs revisited</article-title>. In: <source>Advances in Neural Information Processing Systems 26</source> (<publisher-loc>Lake Tahoe, NV</publisher-loc>). (<year>2013</year>). p. <fpage>2427</fpage>&#x02013;<lpage>35</lpage>.</citation></ref>
<ref id="B47">
<label>47.</label>
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Iske</surname> <given-names>A</given-names></name> <name><surname>Borne</surname> <given-names>SL</given-names></name> <name><surname>Wende</surname> <given-names>M</given-names></name></person-group>. <article-title>Hierarchical matrix approximation for kernel-based scattered data interpolation</article-title>. <source>SIAM J Sci Comput.</source> (<year>2017</year>) <volume>39</volume>:<fpage>A2287</fpage>&#x02013;<lpage>316</lpage>. <pub-id pub-id-type="doi">10.1137/16M1101167</pub-id></citation></ref>
<ref id="B48">
<label>48.</label>
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Robert</surname> <given-names>C</given-names></name></person-group>. <source>Machine Learning, a Probabilistic Perspective.</source> <publisher-loc>Abingdon, UK</publisher-loc>: <publisher-name>Taylor &#x00026; Francis</publisher-name> (<year>2014</year>).</citation></ref>
</ref-list>
<fn-group>
<fn id="fn0001"><p><sup>1</sup><ext-link ext-link-type="uri" xlink:href="https://www.tu-chemnitz.de/~potts/nfft/">https://www.tu-chemnitz.de/~potts/nfft/</ext-link></p></fn>
<fn id="fn0002"><p><sup>2</sup><ext-link ext-link-type="uri" xlink:href="https://www.tu-chemnitz.de/mathematik/wire/people/files_alfke/NFFT-Lanczos-Example-v1.tar.gz">https://www.tu-chemnitz.de/mathematik/wire/people/files_alfke/NFFT-Lanczos-Example-v1.tar.gz</ext-link></p></fn>
<fn id="fn0003"><p><sup>3</sup><ext-link ext-link-type="uri" xlink:href="https://sites.google.com/site/kittipat/matlabtechniques">https://sites.google.com/site/kittipat/matlabtechniques</ext-link></p></fn>
<fn id="fn0004"><p><sup>4</sup><ext-link ext-link-type="uri" xlink:href="https://www.mathworks.com/matlabcentral/fileexchange/41459-6-functions-for-generating-artificial-datasets">https://www.mathworks.com/matlabcentral/fileexchange/41459-6-functions-for-generating-artificial-datasets</ext-link></p></fn>
</fn-group>
</back>
</article>