在Python中查找切比雪夫多项式的根

问题描述 投票:1回答:1

我想使用Python查找任何顺序的Chebysev多项式的根。我已经看到勒让德多项式的similar threads。但是,我使用here定义为

的方法构造了多项式
import numpy as np 
import sympy as sp 

f0 = lambda x: chebyt(0,x)
f1 = lambda x: chebyt(1,x)
f2 = lambda x: chebyt(2,x)
f3 = lambda x: chebyt(3,x)
f4 = lambda x: chebyt(4,x)
plot([f0,f1,f2,f3,f4],[-1,1])

我曾尝试使用np.roots(f4),但收到以下错误:TypeError: float() argument must be a string or a number, not 'function'。此外,即使可以,it seems that也不适用于高阶多项式。

python numpy sympy polynomials mpmath
1个回答
1
投票

您可以通过使用“基本求值” here下的方法找到切比雪夫多项式的系数,然后在反向列表中使用np.roots来生成多项式的根,来进行此操作。

使用np.roots无效,因为np.roots(f4)函数仅接受多项式系数列表,而不接受lambda函数。

代码:

roots

输出:

from mpmath import chebyt, chop, taylor
import numpy as np

for n in range(5):
    print(np.roots(chop(taylor(lambda x: chebyt(n, x), 0, n))[::-1]))

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.