Python中的移位切比雪夫多项式

2024-04-26 14:25:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python中提取移位切比雪夫多项式的系数,但是我找不到这样做的函数。你知道吗

有以下功能:

scipy.special.eval_sh_chebyt

scipy.special.eval_sh_chebyt(n, x, out=None) = <ufunc 'eval_sh_chebyt'>

但我不能只提取系数。你知道吗

移位切比雪夫多项式为: T^{*}u n(x)=T u n(2x-1)

然后:

图1 ^{*}(x)=2x-1

图2^{*}(x)=8x^2-8x-1

我只想提取一个系数为2和1或8,8和1的矩阵。你知道吗


Tags: 函数功能nonesheval矩阵scipyout
1条回答
网友
1楼 · 发布于 2024-04-26 14:25:57

scipy.special.eval_sh_chebyt在给定点x计算函数T*。除非你非常聪明地选择你的论点,否则这不是一个获得系数的合适方法。你知道吗

您可以直接从递推公式T0=1,T1=x,T{n}=2xT{n-1}-T{n-2}计算系数。然后从{T*{n}=T{n}(2x-1)计算移位多项式。你知道吗

degree = 10

coeffs = []
# for T_0
coeffLine = [1]
coeffs.append(coeffLine)
# for T_1
coeffLine = [0, 1]
coeffs.append(coeffLine)

for i in range(2, degree + 1):
    coeffLine = [0] * (1 + i)
    coeffLine[0] = -coeffs[i - 2][0]
    for j in range(1, i - 1):
        coeffLine[j] = 2 * coeffs[i - 1][j - 1] - coeffs[i - 2][j]
    coeffLine[-2] = 2 * coeffs[i - 1][-2]
    coeffLine[-1] = 2 * coeffs[i - 1][-1]
    coeffs.append(coeffLine)        

print("T_%d" % degree, coeffs[-1])

shiftedCoeffs = [0] * (degree + 1);
for i in range(degree + 1):
    binom = 1
    for j in range(i + 1):
        shiftedCoeffs[i - j] += coeffs[-1][i] * 2 ** (i - j) * (-1) ** j * binom
        binom *= (i - j) / (j + 1)


print("T*_%d" % degree, shiftedCoeffs)

编辑:我最初把T*{n}的公式误读为{n}(x)*(2x-1)。然而它是T*{n}=T{n}(2x-1)。因此,我们需要根据x的顺序来计算二项式系数。你知道吗

相关问题 更多 >