----------------------------------------------------------------------------- -- | -- Module : Polynomial.Chebyshev -- Copyright : (c) Matthew Donadio 2003 -- License : GPL -- -- Maintainer : m.p.donadio@ieee.org -- Stability : experimental -- Portability : portable -- -- Simple module for generating Chebyshev polynomials -- -- @T_0(x) = 1@ -- -- @T_1(x) = x@ -- -- @T_N+1(x) = 2x T_N(x) - T_N-1(x)@ -- ----------------------------------------------------------------------------- module Polynomial.Chebyshev (cheby) where import Polynomial.Basic -- | generates Chebyshev polynomials {-# specialize cheby :: Int -> [Int] #-} {-# specialize cheby :: Int -> [Double] #-} cheby :: (Integral a, Num b) => a -- ^ N -> [b] -- ^ T_N(x) -- the cases for n=2.. aren't needed for the recursion, but I added -- them anyway cheby 0 = [ 1 ] cheby 1 = [ 0, 1 ] cheby 2 = [ -1, 0, 2 ] cheby 3 = [ 0, -3, 0, 4 ] cheby 4 = [ 1, 0, -8, 0, 8 ] cheby 5 = [ 0, 5, 0, -20, 0, 16] cheby 6 = [ -1, 0, 18, 0, -48, 0, 32 ] cheby n = polysub (polymult [ 0, 2 ] (cheby (n-1))) (cheby (n-2))