提问人:slow_learner 提问时间:12/2/2019 最后编辑:DRVslow_learner 更新时间:12/2/2019 访问量:998
在 python 中查找切比雪夫多项式的根
Finding the Roots of Chebyshev's polynomials in python
问:
我想使用 Python 找到任何阶的切比谢夫多项式的根。我见过类似的勒让德多项式的线程。但是,我使用此处定义的方法构造了我的多项式
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'
答:
2赞
CDJB
12/2/2019
#1
为此,您可以使用此处“基本评估”标题下的方法查找切比雪夫多项式的系数,然后在反向列表中使用 np.roots
生成多项式的根。
using 不起作用,因为该函数只接受多项式系数列表,而不是 lambda 函数。np.roots(f4)
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]))
输出:
[]
[0.]
[ 0.70710678 -0.70710678]
[ 0.8660254 -0.8660254 0. ]
[-0.92387953 0.92387953 -0.38268343 0.38268343]
希望能有所帮助。
评论
0赞
slow_learner
12/2/2019
确实有帮助。这就是我需要的。然而,正如它在这个链接 math.stackexchange.com/questions/12160/...中所包含的那样,似乎高阶多项式的根可能会失败。你能给我一些建议吗?
0赞
CDJB
12/2/2019
抱歉,这个领域不是我的强项 - 你可能有更好的时间询问 math.SE。
评论