Многочлены Чебышева
Многочлены Чебышева представляют собой две последовательности многочленов: и . Многочлены Чебышева первого рода, , могут определяться рекуррентной формулой:
Многочлены Чебышева второго рода, , могут определяться следующей формулой:
Как , так и имеют степень , и любой многочлен степени можно однозначно записать в виде линейной комбинации многочленов , , …, (то же самое верно и для ).
Первый род
#
Polynomials.ChebyshevT — Type
ChebyshevT{T, X}(coeffs::AbstractVector)
Многочлен Чебышева первого рода.
Создает многочлен на основе коэффициентов coeffs, начиная с самого низкого порядка, опционально c использованием заданной переменной var, которая может быть представлена символом или строкой.
|
|
Примеры
julia> using Polynomials
julia> p = ChebyshevT([1, 0, 3, 4])
ChebyshevT(1⋅T_0(x) + 3⋅T_2(x) + 4⋅T_3(x))
julia> ChebyshevT([1, 2, 3, 0], :s)
ChebyshevT(1⋅T_0(s) + 2⋅T_1(s) + 3⋅T_2(s))
julia> one(ChebyshevT)
ChebyshevT(1.0⋅T_0(x))
julia> p(0.5)
-4.5
julia> Polynomials.evalpoly(5.0, p, false) # обходит проверку области определения, выполняемую в p(5.0)
2088.0
В последнем случае показано, как многочлен ChebyshevT вычисляется за пределами области определения, то есть [-1,1]. В последних версиях Julia функция evalpoly экспортируется из Base с методами, расширяемыми в данном пакете, поэтому квалификация модуля не требуется.
|
Многочлены Чебышева также реализованы в пакетах |
Тип ChebyshevT содержит коэффициенты, представляющие многочлен .
Например, базисный многочлен можно представить как ChebyshevT([0,0,0,0,1]).
Преобразование
ChebyshevT можно преобразовать в Polynomial, и наоборот.
julia> c = ChebyshevT([1, 0, 3, 4])
ChebyshevT(1⋅T_0(x) + 3⋅T_2(x) + 4⋅T_3(x))
julia> p = convert(Polynomial, c)
Polynomial(-2.0 - 12.0*x + 6.0*x^2 + 16.0*x^3)
julia> convert(ChebyshevT, p)
ChebyshevT(1.0⋅T_0(x) + 3.0⋅T_2(x) + 4.0⋅T_3(x))