迭代多项式乘法 - Python中的切比雪夫多项式
问题描述:
我的问题是:什么是在Python中迭代多项式乘法的最佳方法?迭代多项式乘法 - Python中的切比雪夫多项式
我认为一个有趣的项目是在Python中编写一个函数来为给定度数的Chebyshev多项式生成每个项的系数和指数。
With:
Ť(X)= 1
and
Ť(X:产生这样的多项式递归函数是(用T Ñ(X)表示) )= X:
Ťñ(X)= 2XT n-1个(X) - T的 n-2(x)
我到目前为止并不是非常有用,但我在围绕如何实现这一目标方面遇到了麻烦。我希望发生的是:
>> chebyshev(4)
[[8,4], [8,2], [1,0]]
这份名单代表了4级,切比雪夫多项式: 牛逼(X)= 8X - 8倍 + 1
import sys
def chebyshev(n, a=[1,0], b=[1,1]):
z = [2,1]
result = []
if n == 0:
return a
if n == 1:
return b
print >> sys.stderr, ([z[0]*b[0],
z[1]+b[1]],
a) # This displays the proper result for n = 2
return result
我在网上找到的one solution没有工作,所以我希望有人可以摆脱一些光。
p.s.更多关于切比雪夫多项式的信息:CSU Fullteron,Wikipedia - Chebyshev polynomials。它们非常酷/有用,并且将一些非常有趣的trig函数/属性联系在一起;值得一读。
答
的切比雪夫最好的实现是:
// Computes T_n(x), with -1 <= x <= 1
real T(int n, real x)
{
return cos(n*acos(x)) ;
}
如果你测试这个对其他的实现,包括明确的多项式评估和iteratively computing the recurrence relation,这其实是一样快。 Try it yourself.。
一般:
- 明确多项式的评价是最差的(对于大的N)
- 递归评价是好一点
- 余弦的评价是最好的
谢谢了!我曾经在numpy中找过它,但不是SciPy。 – mattdeboard 2011-05-04 19:34:05