关于Chebyshev多项式函数代码实现问题( 二 )

关于Chebyshev多项式函数代码实现问题


■网友
切比雪夫多项式的另一种表达形式是:
关于Chebyshev多项式函数代码实现问题

至少在Intel的SSE指令集中,cos和acos都是有直接的硬件指令的。

用C的话,参考这里Intrinsics Guide。
你需要了解一下你用的编译器怎么使用SSE的Intrinsics。

■网友
你只需要存两个变量,一个 T(n-1),一个 T(n-2),就能算出 T(n) 了。随着 n 增大,T(n-1)、T(n-2) 也跟着变就行了。并不需要把 T(1) 到 T(n) 全存在一个数组里面。
所以最简单的实现就是这种样子:
def chebyshev(n, x): if n == 0: return 1 elif n == 1: return x t2, t1 = 1, x for i in range(1, n): t = 2 * x * t1 - t2 t2, t1 = t1, t return t
■网友
也没什么好的方法,只能避免使用递归。如果你的计算种类不多,比如说x和n的值只有几种,建议适应使用查表法,比如说提前全部或者部分展开结果,然后通过查询的方式减少计算过程。
■网友
chebyshev多项式相比较legendre多项式的优势之处除了可以做fft加速以外,另一个优势在于表达式是可以直接由cos(narccos(x))得到,而不需要反复递归。


推荐阅读