Algorytm Clenshawa

Algorytm Clenshawa[1] – rekurencyjna metoda obliczania liniowej kombinacji wielomianów Czebyszewa. Stosuje się go do dowolnej klasy funkcji definiowalnych za pomocą trójtermowego równania rekurencyjnego[2].

Algorytm Clenshawa

Niech ciąg ϕ k , k = 0 , 1 , {\displaystyle \phi _{k},\;k=0,1,\dots } spełnia liniową relację rekurencyjną

ϕ k + 1 ( x ) + α k ( x ) ϕ k ( x ) + β k ( x ) ϕ k 1 ( x ) = 0 , {\displaystyle \phi _{k+1}(x)+\alpha _{k}(x)\,\phi _{k}(x)+\beta _{k}(x)\,\phi _{k-1}(x)=0,}

gdzie współczynniki α k {\displaystyle \alpha _{k}} i β k {\displaystyle \beta _{k}} są znane. Dla dowolnego, skończonego ciągu c 0 , , c n , {\displaystyle c_{0},\dots ,c_{n},} definiujemy funkcje b k {\displaystyle b_{k}} przez „odwrócony” wzór rekurencyjny:

b n + 1 ( x ) = b n + 2 ( x ) = 0 , b k ( x ) = c 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)&=c_{k}-\alpha _{k}(x)\,b_{k+1}(x)-\beta _{k+1}(x)\,b_{k+2}(x).\end{aligned}}}

Kombinacja liniowa ϕ k {\displaystyle \phi _{k}} spełnia:

k = 0 n c k ϕ k ( x ) = b 0 ( x ) ϕ 0 ( x ) + b 1 ( x ) [ ϕ 1 ( x ) + α 0 ( x ) ϕ 0 ( x ) ] . {\displaystyle \sum _{k=0}^{n}c_{k}\phi _{k}(x)=b_{0}(x)\phi _{0}(x)+b_{1}(x)\left[\phi _{1}(x)+\alpha _{0}(x)\phi _{0}(x)\right].}

Specjalny przypadek dla ciągu wielomianów Czebyszewa

Rozważmy kombinację liniową wielomianów Czebyszewa

p n ( x ) = a 0 2 + a 1 T 1 ( x ) + a 2 T 2 ( x ) + + a n T n ( x ) . {\displaystyle p_{n}(x)={\frac {a_{0}}{2}}+a_{1}T_{1}(x)+a_{2}T_{2}(x)+\ldots +a_{n}T_{n}(x).}

Współczynniki w postaci rekurencyjnej dla wielomianów Czebyszewa to

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

Korzystając z zależności

T 0 ( x ) = 1 , T 1 ( x ) = x T 0 ( x ) , b 0 ( x ) = a 0 + 2 x b 1 ( x ) b 2 ( x ) , {\displaystyle {\begin{aligned}T_{0}(x)&=1,\quad T_{1}(x)=xT_{0}(x),\\[.5em]b_{0}(x)&=a_{0}+2xb_{1}(x)-b_{2}(x),\end{aligned}}}

algorytm Clenshawa redukuje się do:

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

Zobacz też

  • schemat Hornera do obliczania wielomianów w postaci potęgowej
  • algorytm de Casteljau do obliczania wielomianów w postaci Beziera

Przypisy

  1. C.W. Clenshaw, A note on the summation of Chebyshev series, Math. Tab. Wash. 9 (1955), pp. 118–120.
  2. W.H.W.H. Press W.H.W.H. i inni, Numerical Recipes: The Art of Scientific Computing, Cambridge University Press, 2007 .