<title>Chebyshev Polynomials</title>
<link rel="stylesheet" href="../../math.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="../../index.html" title="Math Toolkit 2.10.0">
+<link rel="home" href="../../index.html" title="Math Toolkit 2.11.0">
<link rel="up" href="../sf_poly.html" title="Polynomials">
<link rel="prev" href="hermite.html" title="Hermite Polynomials">
<link rel="next" href="sph_harm.html" title="Spherical Harmonics">
<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Real</span><span class="special">></span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">chebyshev_t</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Real</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Real</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 19. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
-<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">chebyshev_t</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Real</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 19. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Real</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 20. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">chebyshev_t</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Real</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 20. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Real</span><span class="special">></span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">chebyshev_u</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Real</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
-<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Real</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 19. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
-<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">chebyshev_u</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Real</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 19. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Real</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 20. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
+<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">chebyshev_u</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Real</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 20. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">Real</span><span class="special">></span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">chebyshev_t_prime</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Real</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
<span class="special">}}</span> <span class="comment">// namespaces</span>
</pre>
<p>
- <span class="quote">“<span class="quote">Real analysts cannot do without Fourier, complex analysts cannot do
- without Laurent, and numerical analysts cannot do without Chebyshev</span>”</span>--Lloyd
- N. Trefethen
+ <span class="emphasis"><em>"Real analysts cannot do without Fourier, complex analysts
+ cannot do without Laurent, and numerical analysts cannot do without Chebyshev"</em></span>
+ --Lloyd N. Trefethen
</p>
<p>
The Chebyshev polynomials of the first kind are defined by the recurrence
work. This is because two traditions exist in notation for the Chebyshev
series expansion,
</p>
-<p>
- <span class="emphasis"><em>f</em></span>(<span class="emphasis"><em>x</em></span>) ≈ ∑<sub>n=0</sub><sup>N-1</sup> <span class="emphasis"><em>a</em></span><sub>n</sub><span class="emphasis"><em>T</em></span><sub>n</sub>(<span class="emphasis"><em>x</em></span>)
- </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>f</em></span>(<span class="emphasis"><em>x</em></span>) ≈ ∑<sub>n=0</sub><sup>N-1</sup> <span class="emphasis"><em>a</em></span><sub>n</sub><span class="emphasis"><em>T</em></span><sub>n</sub>(<span class="emphasis"><em>x</em></span>)
+ </p></blockquote></div>
<p>
and
</p>
-<p>
- <span class="emphasis"><em>f</em></span>(<span class="emphasis"><em>x</em></span>) ≈ <span class="emphasis"><em>c</em></span><sub>0</sub>/2
- + ∑<sub>n=1</sub><sup>N-1</sup> <span class="emphasis"><em>c</em></span><sub>n</sub><span class="emphasis"><em>T</em></span><sub>n</sub>(<span class="emphasis"><em>x</em></span>)
- </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="emphasis"><em>f</em></span>(<span class="emphasis"><em>x</em></span>) ≈ <span class="emphasis"><em>c</em></span><sub>0</sub>/2
+ + ∑<sub>n=1</sub><sup>N-1</sup> <span class="emphasis"><em>c</em></span><sub>n</sub><span class="emphasis"><em>T</em></span><sub>n</sub>(<span class="emphasis"><em>x</em></span>)
+ </p></blockquote></div>
<p>
<span class="emphasis"><em><span class="bold"><strong>boost math always uses the second convention,
with the factor of 1/2 on the first coefficient.</strong></span></em></span>
</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
- We want a numerically stable way to evaluate the function's derivative
+ We want a numerically stable way to evaluate the function's derivative.
</li>
<li class="listitem">
Our function is expensive to evaluate, and we wish to find a less expensive
accelerate the computation of these functions.
</li>
<li class="listitem">
- We wish to numerically integrate the function
+ We wish to numerically integrate the function.
</li>
</ul></div>
<p>
The Chebyshev transform works by creating a vector of values by evaluating
the input function at the Chebyshev points, and then performing a discrete
cosine transform on the resulting vector. In order to do this efficiently,
- we have used FFTW3. So to compile, you must have <code class="computeroutput"><span class="identifier">FFTW3</span></code>
- installed, and link with <code class="computeroutput"><span class="special">-</span><span class="identifier">lfftw3</span></code>
+ we have used <a href="http://www.fftw.org/" target="_top">FFTW3</a>. So to compile,
+ you must have <code class="computeroutput"><span class="identifier">FFTW3</span></code> installed,
+ and link with <code class="computeroutput"><span class="special">-</span><span class="identifier">lfftw3</span></code>
for double precision, <code class="computeroutput"><span class="special">-</span><span class="identifier">lfftw3f</span></code>
for float precision, <code class="computeroutput"><span class="special">-</span><span class="identifier">lfftw3l</span></code>
for long double precision, and -lfftwq for quad (<code class="computeroutput"><span class="identifier">__float128</span></code>)