我的问题是:Python中迭代多项式乘法的最佳方法是什么?
我认为一个有趣的项目是在Python中编写一个函数来生成给定度数的切比雪夫多项式的每个项的系数和指数。生成这样一个多项式的递归函数(由T n (x)表示)是:
With:
T 0 (x)= 1
and
T 1 (x)= x:
T n (x)= 2xT n-1 (x) - T n-2 (x)
到目前为止我所拥有的并不是很有用,但是我很难绕过如何实现这一目标。我想要发生的是以下几点:
>> chebyshev(4)
[[8,4], [8,2], [1,0]]
此列表代表第4度的切比雪夫多项式: T 4 (x)= 8x 4 - 8x 2 + 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函数/属性联系在一起;值得一读。
答案 0 :(得分:2)
答案 1 :(得分:1)
Chebyshev的最佳实施是:
// 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.
一般而言:
答案 2 :(得分:0)
orthopy(我的一个项目)也支持 Chebyshev 多项式的计算。随着
import orthopy
# from sympy.abc import x
x = 0.5
normalization = "normal" # or "classical", "monic"
evaluator = orthopy.c1.chebyshev1.Eval(x, normalization)
for _ in range(10):
print(next(evaluator))
0.5641895835477564
0.39894228040143276
-0.39894228040143265
...
在 x = 0.5
处,您会得到次数增加的多项式的值。您可以使用包含多个值的列表/向量,甚至是 sympy 符号。
计算当然是有递推关系的。如果您对系数感兴趣,请查看
rc = orthopy.c1.chebyshev1.RecurrenceCoefficients("monic", symbolic=True)