在Python中生成Chebyshev多项式的系数

3

我正在尝试计算第k阶切比雪夫多项式的系数。让我们将k设为5。到目前为止,我有以下内容:

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
有人知道如何解决这个问题吗?

'NP'包是什么?我猜它代表着NumPy...你确定cpoly有'all_coeffs'方法吗? - Zohar81
2
你有查看文档吗?对于 cheb2poly 函数:--> 将一个按照从低次到高次排序的切比雪夫级数系数数组转换成等效多项式的系数数组 - cel
@Zohar 是的,它代表numpy..在发布到这里之前应该进行转换。cpoly没有那个方法。但我不确定如何定义cpoly以使其具有该方法。 - N. Mao
@cel 如果cheb2poly不是正确的调用方法,你知道哪个是吗? - N. Mao
2
我认为你只是误用了这个方法。文档明确指出,你应该传递系数并获取系数。而你实际上传递了一个多项式对象,并期望得到一个多项式对象,这显然不是该方法的作用。 - cel
尝试 x=cpoly[0]; x.coef[<coefficient_ix>] - Zohar81
2个回答

5

@cel 在评论中提出了正确的想法 - 你需要传递 Chebyshev 多项式的 系数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.]

16x5 - 20x3 + 5x。您可以在此处确认这些是正确的系数。
要将这些系数转换为Polynomial对象,您只需要将数组传递给Polynomial构造函数即可:
poly = np.polynomial.Polynomial(coef)

1
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.])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接