我找到了 Wikipedia 计算公式 第一类切比雪夫多项式 以递归的方式:
T₀(x) = 1
T₁(x) = x
Tₙ(x) = (Tₙ₊₁(x) + Tₙ₋₁(x)) / 2x
但是我真的不知道如何在Sagemath中实现它。
def T(n):
if n == 0:
return 1
elif n == 1:
return x
else:
t = (T(n+1) + T(n-1)) / (2*x)
return t
当n
为2或更大时,我总是得到一个RuntimeError,这意味着我的递归永远不会停止。我理解Principe的递归和迭代过程的区别,但我有点卡在这里。
预期输出为:
sage: T(0)
1
sage: T(1)
x
sage: T(2)
2x^2 - 1
sage: T(3)
4x^3 - 3x
sage: # and so on
答案 0 :(得分:1)
您正在解释规则错误。没有必要解决T(n)
。只需假设n = n + 1
,最后一次递归关系变为:T(n) = 2xT(n-1) - T(n-2)
。所以你的递归函数变成了:
def T(n):
if n == 0:
return 1
elif n == 1:
return x
else:
return 2 * x * T(n-1) - T(n-2)
这给出了期望的结果。
示例:
T(2) = 2x * T(1) - T(0)
但是T(1) = x
和T(0) = 1
,所以:
T(2) = 2x * x - 1
T(2) = 2x^2 - 1
答案 1 :(得分:0)
为了清楚起见,Chebyshev polynomials和各种朋友都在SageMath中实现。