在 Python 中生成 Chebyshev 多项式的系数
Generating the coefficients of a Chebyshev polynomial in Python
我正在尝试计算 kth 切比雪夫多项式的系数。为此,我们将 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
。
有人知道如何解决这个问题吗?
@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.]
即16x5 - 20x3 + 5x。您可以确认这些是正确的系数 here.
要将这些系数变成一个Polynomial
对象,你只需要将数组传递给Polynomial
构造函数:
poly = np.polynomial.Polynomial(coef)
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.])
我正在尝试计算 kth 切比雪夫多项式的系数。为此,我们将 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
。
有人知道如何解决这个问题吗?
@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.]
即16x5 - 20x3 + 5x。您可以确认这些是正确的系数 here.
要将这些系数变成一个Polynomial
对象,你只需要将数组传递给Polynomial
构造函数:
poly = np.polynomial.Polynomial(coef)
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.])