2015-08-23 19 views
3

Я пытаюсь вычислить коэффициенты K-й Чебышева многочлена. Давайте просто установим k на 5 для этого. До сих пор у меня есть следующие:Генерация коэффициентов полинома Чебышева в Python

a = (0,0,0,0,0,1) #selects the 5th Chebyshev polynomial 
p = numpy.polynomial.chebyshev.Chebyshev(a) #type here is Chebyshev 
cpoly = numpy.polynomial.chebyshev.cheb2poly(p) #trying to convert to Poly 
print cpoly.all_coeffs() 

После второй линии работает, у меня есть объект типа Chebyshev, как и ожидалось. Однако в третьей строке не удается преобразовать тип Poly и преобразовать в тип numpy.ndarray. Таким образом, я получаю сообщение о том, что ndarray не имеет атрибута all_coeffs.

Кто-нибудь знает, как это исправить?

+0

что пакет «NP»? я предполагаю, что это означает umpy ... и вы уверены, что cpoly имеет метод all_coeffs? – Zohar81

+2

Вы проверили документы? для 'cheb2poly': ->' Преобразование массива, представляющего коэффициенты ряда Чебышева, упорядоченного от наименьшей степени до наивысшего, до массива коэффициентов эквивалентного многочлена' – cel

+0

@ Zohar да, это означает numpy..should Мы изменили это, прежде чем публиковать здесь. cpoly не имеет этого метода. Но я не уверен, как определить cpoly, чтобы он это делал. –

ответ

5

@cel имеет право идею в комментариях - вам необходимо пройти коэффициенты полинома Чебышева к cheb2poly, а не сам объект:

import numpy as np 

cheb = np.polynomial.chebyshev.Chebyshev((0,0,0,0,0,1)) 
coef = np.polynomial.chebyshev.cheb2poly(cheb.coef) 

print(coef) 
# [ 0., 5., 0., -20., 0., 16.] 

т.е. 16x 5 - 20x + 5x. Вы можете подтвердить, что это правильные коэффициенты here.

Чтобы превратить эти коэффициенты в Polynomial объекта, вам просто нужно передать массив в Polynomial конструктор:

poly = np.polynomial.Polynomial(coef) 
0
In [1]: import numpy.polynomial 

In [2]: p = numpy.polynomial.Chebyshev.basis(5) 

In [3]: p 
Out[3]: Chebyshev([ 0., 0., 0., 0., 0., 1.], [-1., 1.], [-1., 1.]) 

In [4]: p.convert(kind=numpy.polynomial.Polynomial) 
Out[4]: Polynomial([ 0., 5., 0., -20., 0., 16.], [-1., 1.], [-1., 1.]) 
Смежные вопросы