Многочлены Чебышева
Многочлены Чебышева представляют собой две последовательности многочленов: и . Многочлены Чебышева первого рода, , могут определяться рекуррентной формулой:
Многочлены Чебышева второго рода, , могут определяться следующей формулой:
Как , так и имеют степень , и любой многочлен степени можно однозначно записать в виде линейной комбинации многочленов , , …, (то же самое верно и для ).
Первый род
#
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))