切比雪夫多项式的计算
Evaluation of a Chebyshev polynomial
我需要构造一个函数,为我提供任意切比雪夫多项式在某一点的值。我有一个函数可以对勒让德多项式执行
def legendre_Pn(K, x):
p0 = N.array(1.0)
p1 = N.array(x)
if K==0:
return p0
elif K==1:
return p1
else:
for n in range(2,K+1):
pn = (2*n-1)*x*p1/n-(n-1)*p0/n
p0 = p1
p1 = pn
return pn
但是,由于 Chebyshev 不是使用前两个计算而是使用前一个计算,如 https://en.wikipedia.org/wiki/Chebyshev_polynomials, I can't do it as in the previous code. I have found the following function https://docs.scipy.org/doc/numpy/reference/generated/numpy.polynomial.chebyshev.chebval.html#numpy.polynomial.chebyshev.chebval 中所示,但我认为它不能满足我的需要。
您可以为此使用 mpmath.chebyt(n, x)
,其中 n
指的是您要计算的切比雪夫多项式,而 x
是您要计算的点。
return 值是 class mpf
的一个真正的浮点数。可以找到更多详细信息 here。
用法示例:
>>> chebyt(4, 0.5)
mpf('-0.5')
我需要构造一个函数,为我提供任意切比雪夫多项式在某一点的值。我有一个函数可以对勒让德多项式执行
def legendre_Pn(K, x):
p0 = N.array(1.0)
p1 = N.array(x)
if K==0:
return p0
elif K==1:
return p1
else:
for n in range(2,K+1):
pn = (2*n-1)*x*p1/n-(n-1)*p0/n
p0 = p1
p1 = pn
return pn
但是,由于 Chebyshev 不是使用前两个计算而是使用前一个计算,如 https://en.wikipedia.org/wiki/Chebyshev_polynomials, I can't do it as in the previous code. I have found the following function https://docs.scipy.org/doc/numpy/reference/generated/numpy.polynomial.chebyshev.chebval.html#numpy.polynomial.chebyshev.chebval 中所示,但我认为它不能满足我的需要。
您可以为此使用 mpmath.chebyt(n, x)
,其中 n
指的是您要计算的切比雪夫多项式,而 x
是您要计算的点。
return 值是 class mpf
的一个真正的浮点数。可以找到更多详细信息 here。
用法示例:
>>> chebyt(4, 0.5)
mpf('-0.5')