En analyse numérique, l’algorithme de Clenshaw est une méthode récursive permettant d'évaluer un polynôme comme combinaision linéaire des polynômes de Tchebychev. Elle peut se voir comme une généralisation de la méthode de Horner qui évalue une combinaison linéaire de monômes.

Cette méthode peut être étendue aux classes de fonctions définies par une relation de récurrence d'ordre 2.

Algorithme

Soit ϕ k , k = 0 , 1 , {\displaystyle \phi _{k},\;k=0,1,\ldots } une suite de fonctions vérifiant la relation de récurrence d'ordre 2

ϕ 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),}

où les coefficients α k {\displaystyle \alpha _{k}} et β k {\displaystyle \beta _{k}} sont connus. On remarquera que dans la plupart des cas, α ( x ) {\displaystyle \alpha (x)} est indépendant de k, et β {\displaystyle \beta } est une constante ne dépendant ni de x ni de k.

L'objectif est donc de calculer la somme

S ( x ) = k = 0 n a k ϕ k ( x ) {\displaystyle S(x)=\sum _{k=0}^{n}a_{k}\phi _{k}(x)}

À partir des coefficients a 0 , , a n {\displaystyle a_{0},\ldots ,a_{n}} , on calcule les valeurs b k ( x ) {\displaystyle b_{k}(x)} par la formule de récurrence inverse :

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,\\[.5em]b_{k}(x)&=a_{k} \alpha _{k}(x)\,b_{k 1}(x) \beta _{k 1}(x)\,b_{k 2}(x).\end{aligned}}}

La combinaision linéaire des ϕ k {\displaystyle \phi _{k}} vérifie :

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).}

Fox et Parker ont étudié le comportement et la stabilité de ce type d'algorithme.

La méthode de Horner vue comme celle de Clenshaw

Un cas simple de l'algorithme apparait en considérant un polynôme de la forme

S ( x ) = k = 0 n a k x k {\displaystyle S(x)=\sum _{k=0}^{n}a_{k}x^{k}} .

On obtient alors

ϕ 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}}}

et les coefficients deviennent alors α ( x ) = x {\displaystyle \alpha (x)=x} et β = 0 {\displaystyle \beta =0} .

Ainsi, la formule de récurrence pour calculer la somme est

b k ( x ) = a k x b k 1 ( x ) {\displaystyle b_{k}(x)=a_{k} xb_{k 1}(x)}

et ici, le résultat est

S ( x ) = a 0 x b 1 ( x ) = b 0 ( x ) {\displaystyle S(x)=a_{0} xb_{1}(x)=b_{0}(x)} ,

ce qui permet de retrouver le résultat de la méthode de Horner.

Cas particulier des séries de Tchebychev

Soit une série de Tchebychev tronquée

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).}

Les coefficients de la relation de récurrence dans les polynômes de Tchebychev sont

α ( x ) = 2 x , β = 1 , {\displaystyle \alpha (x)=2x,\quad \beta =-1,}

avec les conditions initiales

T 0 ( x ) = 1 , T 1 ( x ) = x . {\displaystyle T_{0}(x)=1,\quad T_{1}(x)=x.}

La formule de récurrence devient alors

b 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)}

et la somme finale devient

p n ( x ) = a 0 x b 1 ( x ) b 2 ( x ) . {\displaystyle p_{n}(x)=a_{0} xb_{1}(x)-b_{2}(x).}

Un moyen d'évaluer ce polynôme est de calculer la récurrence à un pas supplémentaire, en posant

b 0 ( x ) = 2 a 0 2 x b 1 ( x ) b 2 ( x ) , {\displaystyle b_{0}(x)=2a_{0} 2xb_{1}(x)-b_{2}(x),}

(avec un coefficient a0 double) puis

p n ( x ) = b 0 ( x ) x b 1 ( x ) a 0 = 1 2 [ b 0 ( x ) b 2 ( x ) ] . {\displaystyle p_{n}(x)=b_{0}(x)-xb_{1}(x)-a_{0}={\frac {1}{2}}\left[b_{0}(x)-b_{2}(x)\right].}

Applications géodésiques

L'algorithme de Clenshaw est beaucoup utilisé dans les applications géodésiques, où on parle plutôt de sommation de Clenshaw. Une simple application est de sommer les séries trigonométriques pour calculer un arc de méridien. Ces sommes s'écrivent sous la forme

m ( θ ) = 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 .}

Mis à part le premier terme C 0 θ {\displaystyle C_{0}\,\theta } , le reste peut se voir comme une somme de la forme voulue. Le terme initial dans une telle somme disparait car ϕ 0 ( θ ) = sin 0 θ = sin 0 = 0 {\displaystyle \phi _{0}(\theta )=\sin 0\theta =\sin 0=0} .

En utilisant les relations de trigonométrie, on trouve la relation de récurrence nécessaire :

sin k θ = 2 cos θ sin ( k 1 ) θ sin ( k 2 ) θ , {\displaystyle \sin k\theta =2\cos \theta \sin(k-1)\theta -\sin(k-2)\theta ,}

avec les coefficients correspondants

α k ( θ ) = 2 cos θ , β k = 1. {\displaystyle \alpha _{k}(\theta )=2\cos \theta ,\quad \beta _{k}=-1.}

et l'évaluation de la série est donnée par

b n 1 ( θ ) = b n 2 ( θ ) = 0 , b k ( θ ) = C k 2 b k 1 ( θ ) cos θ b k 2 ( θ ) ( n k 1 ) . {\displaystyle {\begin{aligned}b_{n 1}(\theta )&=b_{n 2}(\theta )=0,\\[.3em]b_{k}(\theta )&=C_{k} 2b_{k 1}(\theta )\cos \theta -b_{k 2}(\theta )\quad (n\geq k\geq 1).\end{aligned}}}

La dernière étape est simplifiée du fait que ϕ 0 ( θ ) = sin 0 = 0 {\displaystyle \phi _{0}(\theta )=\sin 0=0} , ce qui donne b 1 ( θ ) sin ( θ ) {\displaystyle b_{1}(\theta )\sin(\theta )}  ; reste le terme C 0 θ {\displaystyle C_{0}\,\theta } traité séparément :

m ( θ ) = C 0 θ b 1 ( θ ) sin θ . {\displaystyle m(\theta )=C_{0}\,\theta b_{1}(\theta )\sin \theta .}

L'algorithme ne nécessite ainsi que le calcul de cos θ {\displaystyle \cos \theta } et sin θ {\displaystyle \sin \theta } .

Voir aussi

  • Méthode de Horner pour le calcul de polynômes sous forme monomiale
  • Algorithme de De Casteljau pour le calcul de polynômes sous forme de Bézier

Références

  • (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Clenshaw algorithm » (voir la liste des auteurs).
  • Portail de l'analyse

Algorithmus ausführliche Erklärung aus dem KILexikon

Algorithmen verstehen und deren Einsatzgebiete kennenlernen

Spektrum Kompakt Algorithmen im Alltag Spektrum der Wissenschaft

AlgorithmenKarteikarten Quizlet

Solved 2.36. Implement and test the Clenshaw algorithm (see