【问题标题】:Generating the coefficients of a Chebyshev polynomial in Python在 Python 中生成切比雪夫多项式的系数
【发布时间】:2015-08-23 05:34:46
【问题描述】:

我正在尝试计算 kth Chebyshev 多项式的系数。为此,我们只需将 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”包?我想它代表 umpy... 你确定 cpoly 有 'all_coeffs' 方法吗?
  • 你检查过文档吗?对于cheb2poly: --> Convert an array representing the coefficients of a Chebyshev series, ordered from lowest degree to highest, to an array of the coefficients of the equivalent polynomial
  • @Zohar 是的,它代表 numpy ..应该在发布之前转换它。 cpoly 没有那个方法。但我不确定如何定义 cpoly 以便它这样做。
  • @cel 如果 cheb2poly 不是正确的调用方法,你知道哪个是正确的吗?
  • 我认为您只是在滥用该方法。文档明确指出您应该传递系数并获取系数。您实际上传递了一个多项式对象并期望得到一个多项式对象,这根本不是该方法所做的。

标签: python numpy polynomial-math


【解决方案1】:

@cel 在 cmets 中有正确的想法 - 您需要将切比雪夫多项式的 系数 传递给 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)

【讨论】:

    【解决方案2】:
    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.])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 2012-08-13
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多