2011-05-04 273 views
0

我的问题是:什么是在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 FullteronWikipedia - Chebyshev polynomials。它们非常酷/有用,并且将一些非常有趣的trig函数/属性联系在一起;值得一读。

回答

1

的切比雪夫最好的实现是:

// 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)
  • 递归评价是好一点
  • 余弦的评价是最好的