Innumerical analysis , theClenshaw algorithm , also calledClenshaw summation , is arecursive method to evaluate a linear combination ofChebyshev polynomials .[ 1] [ 2] The method was published byCharles William Clenshaw in 1955. It is a generalization ofHorner's method for evaluating a linear combination ofmonomials .
It generalizes to more than just Chebyshev polynomials; it applies to any class of functions that can be defined by a three-termrecurrence relation .[ 3]
In full generality, the Clenshaw algorithm computes the weighted sum of a finite series of functionsϕ k ( x ) {\displaystyle \phi _{k}(x)} :S ( x ) = ∑ k = 0 n a k ϕ k ( x ) {\displaystyle S(x)=\sum _{k=0}^{n}a_{k}\phi _{k}(x)} whereϕ k , k = 0 , 1 , … {\displaystyle \phi _{k},\;k=0,1,\ldots } is a sequence of functions that satisfy the linear recurrence relationϕ k + 1 ( x ) = α k ( x ) ϕ k ( x ) + β k ( x ) ϕ k − 1 ( x ) , {\displaystyle \phi _{k+1}(x)=\alpha _{k}(x)\,\phi _{k}(x)+\beta _{k}(x)\,\phi _{k-1}(x),} where the coefficientsα k ( x ) {\displaystyle \alpha _{k}(x)} andβ k ( x ) {\displaystyle \beta _{k}(x)} are known in advance.
The algorithm is most useful whenϕ k ( x ) {\displaystyle \phi _{k}(x)} are functions that are complicated to compute directly, butα k ( x ) {\displaystyle \alpha _{k}(x)} andβ k ( x ) {\displaystyle \beta _{k}(x)} are particularly simple. In the most common applications,α ( x ) {\displaystyle \alpha (x)} does not depend onk {\displaystyle k} , andβ {\displaystyle \beta } is a constant that depends on neitherx {\displaystyle x} nork {\displaystyle k} .
To perform the summation for given series of coefficientsa 0 , … , a n {\displaystyle a_{0},\ldots ,a_{n}} , compute the valuesb k ( x ) {\displaystyle b_{k}(x)} by the "reverse" recurrence formula:b n + 1 ( x ) = b n + 2 ( x ) = 0 , b k ( x ) = a k + α k ( x ) b k + 1 ( x ) + β k + 1 ( x ) b k + 2 ( x ) . {\displaystyle {\begin{aligned}b_{n+1}(x)&=b_{n+2}(x)=0,\\b_{k}(x)&=a_{k}+\alpha _{k}(x)\,b_{k+1}(x)+\beta _{k+1}(x)\,b_{k+2}(x).\end{aligned}}}
Note that this computation makes no direct reference to the functionsϕ k ( x ) {\displaystyle \phi _{k}(x)} . After computingb 2 ( x ) {\displaystyle b_{2}(x)} andb 1 ( x ) {\displaystyle b_{1}(x)} ,the desired sum can be expressed in terms of them and the simplest functionsϕ 0 ( x ) {\displaystyle \phi _{0}(x)} andϕ 1 ( x ) {\displaystyle \phi _{1}(x)} :S ( x ) = ϕ 0 ( x ) a 0 + ϕ 1 ( x ) b 1 ( x ) + β 1 ( x ) ϕ 0 ( x ) b 2 ( x ) . {\displaystyle S(x)=\phi _{0}(x)\,a_{0}+\phi _{1}(x)\,b_{1}(x)+\beta _{1}(x)\,\phi _{0}(x)\,b_{2}(x).}
See Fox and Parker[ 4] for more information and stability analyses.
Horner as a special case of Clenshaw [ edit ] A particularly simple case occurs when evaluating a polynomial of the formS ( x ) = ∑ k = 0 n a k x k . {\displaystyle S(x)=\sum _{k=0}^{n}a_{k}x^{k}.} The functions are simplyϕ 0 ( x ) = 1 , ϕ k ( x ) = x k = x ϕ k − 1 ( x ) {\displaystyle {\begin{aligned}\phi _{0}(x)&=1,\\\phi _{k}(x)&=x^{k}=x\phi _{k-1}(x)\end{aligned}}} and are produced by the recurrence coefficientsα ( x ) = x {\displaystyle \alpha (x)=x} andβ = 0 {\displaystyle \beta =0} .
In this case, the recurrence formula to compute the sum isb k ( x ) = a k + x b k + 1 ( x ) {\displaystyle b_{k}(x)=a_{k}+xb_{k+1}(x)} and, in this case, the sum is simplyS ( x ) = a 0 + x b 1 ( x ) = b 0 ( x ) , {\displaystyle S(x)=a_{0}+xb_{1}(x)=b_{0}(x),} which is exactly the usualHorner's method .
Special case for Chebyshev series [ edit ] Consider a truncatedChebyshev series p n ( x ) = a 0 + a 1 T 1 ( x ) + a 2 T 2 ( x ) + ⋯ + a n T n ( x ) . {\displaystyle p_{n}(x)=a_{0}+a_{1}T_{1}(x)+a_{2}T_{2}(x)+\cdots +a_{n}T_{n}(x).}
The coefficients in the recursion relation for theChebyshev polynomials areα ( x ) = 2 x , β = − 1 , {\displaystyle \alpha (x)=2x,\quad \beta =-1,} with the initial conditionsT 0 ( x ) = 1 , T 1 ( x ) = x . {\displaystyle T_{0}(x)=1,\quad T_{1}(x)=x.}
Thus, the recurrence isb k ( x ) = a k + 2 x b k + 1 ( x ) − b k + 2 ( x ) {\displaystyle b_{k}(x)=a_{k}+2xb_{k+1}(x)-b_{k+2}(x)} and the final results areb 0 ( x ) = a 0 + 2 x b 1 ( x ) − b 2 ( x ) , {\displaystyle b_{0}(x)=a_{0}+2xb_{1}(x)-b_{2}(x),} p n ( x ) = 1 2 [ a 0 + b 0 ( x ) − b 2 ( x ) ] . {\displaystyle p_{n}(x)={\tfrac {1}{2}}\left[a_{0}+b_{0}(x)-b_{2}(x)\right].}
An equivalent expression for the sum is given byp n ( x ) = a 0 + x b 1 ( x ) − b 2 ( x ) . {\displaystyle p_{n}(x)=a_{0}+xb_{1}(x)-b_{2}(x).}
Meridian arc length on the ellipsoid [ edit ] Clenshaw summation is extensively used ingeodetic applications.[ 2] A simple application is summing the trigonometric series to compute themeridian arc distance on the surface of an ellipsoid. These have the formm ( θ ) = C 0 θ + C 1 sin θ + C 2 sin 2 θ + ⋯ + C n sin n θ . {\displaystyle m(\theta )=C_{0}\,\theta +C_{1}\sin \theta +C_{2}\sin 2\theta +\cdots +C_{n}\sin n\theta .}
Leaving off the initialC 0 θ {\displaystyle C_{0}\,\theta } term, the remainder is a summation of the appropriate form. There is no leading term becauseϕ 0 ( θ ) = sin 0 θ = sin 0 = 0 {\displaystyle \phi _{0}(\theta )=\sin 0\theta =\sin 0=0} .
Therecurrence relation forsin k θ {\displaystyle \sin k\theta } issin ( k + 1 ) θ = 2 cos θ sin k θ − sin ( k − 1 ) θ , {\displaystyle \sin(k+1)\theta =2\cos \theta \sin k\theta -\sin(k-1)\theta ,} making the coefficients in the recursion relationα k ( θ ) = 2 cos θ , β k = − 1. {\displaystyle \alpha _{k}(\theta )=2\cos \theta ,\quad \beta _{k}=-1.} and the evaluation of the series is given byb n + 1 ( θ ) = b n + 2 ( θ ) = 0 , b k ( θ ) = C k + 2 cos θ b k + 1 ( θ ) − b k + 2 ( θ ) , f o r n ≥ k ≥ 1. {\displaystyle {\begin{aligned}b_{n+1}(\theta )&=b_{n+2}(\theta )=0,\\b_{k}(\theta )&=C_{k}+2\cos \theta \,b_{k+1}(\theta )-b_{k+2}(\theta ),\quad \mathrm {for\ } n\geq k\geq 1.\end{aligned}}} The final step is made particularly simple becauseϕ 0 ( θ ) = sin 0 = 0 {\displaystyle \phi _{0}(\theta )=\sin 0=0} , so the end of the recurrence is simplyb 1 ( θ ) sin ( θ ) {\displaystyle b_{1}(\theta )\sin(\theta )} ; theC 0 θ {\displaystyle C_{0}\,\theta } term is added separately:m ( θ ) = C 0 θ + b 1 ( θ ) sin θ . {\displaystyle m(\theta )=C_{0}\,\theta +b_{1}(\theta )\sin \theta .}
Note that the algorithm requires only the evaluation of two trigonometric quantitiescos θ {\displaystyle \cos \theta } andsin θ {\displaystyle \sin \theta } .
Difference in meridian arc lengths [ edit ] Sometimes it necessary to compute the difference of two meridian arcs in a way that maintains high relative accuracy. This is accomplished by using trigonometric identities to writem ( θ 1 ) − m ( θ 2 ) = C 0 ( θ 1 − θ 2 ) + ∑ k = 1 n 2 C k sin ( 1 2 k ( θ 1 − θ 2 ) ) cos ( 1 2 k ( θ 1 + θ 2 ) ) . {\displaystyle m(\theta _{1})-m(\theta _{2})=C_{0}(\theta _{1}-\theta _{2})+\sum _{k=1}^{n}2C_{k}\sin {\bigl (}{\textstyle {\frac {1}{2}}}k(\theta _{1}-\theta _{2}){\bigr )}\cos {\bigl (}{\textstyle {\frac {1}{2}}}k(\theta _{1}+\theta _{2}){\bigr )}.} Clenshaw summation can be applied in this case[ 5] provided we simultaneously computem ( θ 1 ) + m ( θ 2 ) {\displaystyle m(\theta _{1})+m(\theta _{2})} and perform a matrix summation,M ( θ 1 , θ 2 ) = [ ( m ( θ 1 ) + m ( θ 2 ) ) / 2 ( m ( θ 1 ) − m ( θ 2 ) ) / ( θ 1 − θ 2 ) ] = C 0 [ μ 1 ] + ∑ k = 1 n C k F k ( θ 1 , θ 2 ) , {\displaystyle {\mathsf {M}}(\theta _{1},\theta _{2})={\begin{bmatrix}(m(\theta _{1})+m(\theta _{2}))/2\\(m(\theta _{1})-m(\theta _{2}))/(\theta _{1}-\theta _{2})\end{bmatrix}}=C_{0}{\begin{bmatrix}\mu \\1\end{bmatrix}}+\sum _{k=1}^{n}C_{k}{\mathsf {F}}_{k}(\theta _{1},\theta _{2}),} whereδ = 1 2 ( θ 1 − θ 2 ) , μ = 1 2 ( θ 1 + θ 2 ) , F k ( θ 1 , θ 2 ) = [ cos k δ sin k μ sin k δ δ cos k μ ] . {\displaystyle {\begin{aligned}\delta &={\tfrac {1}{2}}(\theta _{1}-\theta _{2}),\\[1ex]\mu &={\tfrac {1}{2}}(\theta _{1}+\theta _{2}),\\[1ex]{\mathsf {F}}_{k}(\theta _{1},\theta _{2})&={\begin{bmatrix}\cos k\delta \sin k\mu \\{\dfrac {\sin k\delta }{\delta }}\cos k\mu \end{bmatrix}}.\end{aligned}}} The first element ofM ( θ 1 , θ 2 ) {\displaystyle {\mathsf {M}}(\theta _{1},\theta _{2})} is the averagevalue ofm {\displaystyle m} and the second element is the average slope.F k ( θ 1 , θ 2 ) {\displaystyle {\mathsf {F}}_{k}(\theta _{1},\theta _{2})} satisfies the recurrencerelationF k + 1 ( θ 1 , θ 2 ) = A ( θ 1 , θ 2 ) F k ( θ 1 , θ 2 ) − F k − 1 ( θ 1 , θ 2 ) , {\displaystyle {\mathsf {F}}_{k+1}(\theta _{1},\theta _{2})={\mathsf {A}}(\theta _{1},\theta _{2}){\mathsf {F}}_{k}(\theta _{1},\theta _{2})-{\mathsf {F}}_{k-1}(\theta _{1},\theta _{2}),} whereA ( θ 1 , θ 2 ) = 2 [ cos δ cos μ − δ sin δ sin μ − sin δ δ sin μ cos δ cos μ ] {\displaystyle {\mathsf {A}}(\theta _{1},\theta _{2})=2{\begin{bmatrix}\cos \delta \cos \mu &-\delta \sin \delta \sin \mu \\-\displaystyle {\frac {\sin \delta }{\delta }}\sin \mu &\cos \delta \cos \mu \end{bmatrix}}} takes the place ofα {\displaystyle \alpha } in the recurrence relation, andβ = − 1 {\displaystyle \beta =-1} .The standard Clenshaw algorithm can now be applied to yieldB n + 1 = B n + 2 = 0 , B k = C k I + A B k + 1 − B k + 2 , f o r n ≥ k ≥ 1 , M ( θ 1 , θ 2 ) = C 0 [ μ 1 ] + B 1 F 1 ( θ 1 , θ 2 ) , {\displaystyle {\begin{aligned}{\mathsf {B}}_{n+1}&={\mathsf {B}}_{n+2}={\mathsf {0}},\\[1ex]{\mathsf {B}}_{k}&=C_{k}{\mathsf {I}}+{\mathsf {A}}{\mathsf {B}}_{k+1}-{\mathsf {B}}_{k+2},\qquad \mathrm {for\ } n\geq k\geq 1,\\[1ex]{\mathsf {M}}(\theta _{1},\theta _{2})&=C_{0}{\begin{bmatrix}\mu \\1\end{bmatrix}}+{\mathsf {B}}_{1}{\mathsf {F}}_{1}(\theta _{1},\theta _{2}),\end{aligned}}} whereB k {\displaystyle {\mathsf {B}}_{k}} are 2×2 matrices. Finally we havem ( θ 1 ) − m ( θ 2 ) θ 1 − θ 2 = M 2 ( θ 1 , θ 2 ) . {\displaystyle {\frac {m(\theta _{1})-m(\theta _{2})}{\theta _{1}-\theta _{2}}}={\mathsf {M}}_{2}(\theta _{1},\theta _{2}).} This technique can be used in thelimit θ 2 = θ 1 = μ {\displaystyle \theta _{2}=\theta _{1}=\mu } andδ = 0 {\displaystyle \delta =0} to simultaneously computem ( μ ) {\displaystyle m(\mu )} and thederivative d m ( μ ) / d μ {\displaystyle dm(\mu )/d\mu } , provided that, in evaluatingF 1 {\displaystyle {\mathsf {F}}_{1}} andA {\displaystyle {\mathsf {A}}} , we takelim δ → 0 ( sin k δ ) / δ = k {\displaystyle \lim _{\delta \to 0}(\sin k\delta )/\delta =k} .
^ Clenshaw, C. W. (July 1955)."A note on the summation of Chebyshev series" .Mathematical Tables and Other Aids to Computation .9 (51): 118.doi :10.1090/S0025-5718-1955-0071856-0 .ISSN 0025-5718 . Note that this paper is written in terms of theShifted Chebyshev polynomials of the first kindT n ∗ ( x ) = T n ( 2 x − 1 ) {\displaystyle T_{n}^{*}(x)=T_{n}(2x-1)} .^a b Tscherning, C. C.; Poder, K. (1982),"Some Geodetic applications of Clenshaw Summation" (PDF) ,Bolletino di Geodesia e Scienze Affini ,41 (4):349– 375, archived fromthe original (PDF) on 2007-06-12, retrieved2012-08-02 ^ Press, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007),"Section 5.4.2. Clenshaw's Recurrence Formula" ,Numerical Recipes: The Art of Scientific Computing (3rd ed.), New York: Cambridge University Press,ISBN 978-0-521-88068-8 ^ Fox, Leslie; Parker, Ian B. (1968),Chebyshev Polynomials in Numerical Analysis , Oxford University Press,ISBN 0-19-859614-6 ^ Karney, C. F. F. (2024)."The area of rhumb polygons" .Stud. Geophys. Geod .68 (3– 4):99– 120.arXiv :2303.03219 .doi :10.1007/s11200-024-0709-z Appendix B {{cite journal }}
: CS1 maint: postscript (link )