scipy和numpy中Chebyshev多项式实现的区别

时间:2017-05-02 14:32:23

标签: python python-3.x numpy scipy

任何人都可以告诉我切比雪夫在numpy-

之间的区别
numpy.polynomial.Chebyshev.basis(deg) 

和Chebyshev的scipy解释 -

scipy.special.chebyt(deg)

这将是非常有帮助的。 提前谢谢!

1 个答案:

答案 0 :(得分:4)

scipy.special多项式函数使用np.poly1dwhich is outdated and error prone - 特别是,它将x0的索引存储在poly.coeffs[-1]

numpy.polynomial.Chebyshev不仅以更合理的顺序存储系数,而且根据其基础保存系数,从而提高精度。您可以使用cast方法进行转换:

>>> from numpy.polynomial import Chebyshev, Polynomial

# note loss of precision
>>> sc_che = scipy.special.chebyt(4); sc_che
poly1d([  8.000000e+00,   0.000000e+00,  -8.000000e+00, 8.881784e-16,   1.000000e+00])

# using the numpy functions - note that the result is just in terms of basis 4
>>> np_che = Chebyshev.basis(4); np_che
Chebyshev([ 0.,  0.,  0.,  0.,  1.], [-1.,  1.], [-1.,  1.])

# converting to a standard polynomial - note that these store the
# coefficient of x^i in .coeffs[i] - so are reversed when compared to above
>>> Polynomial.cast(np_che)
Polynomial([ 1.,  0., -8.,  0.,  8.], [-1.,  1.], [-1.,  1.])