在 python 中求切比雪夫多项式的根
Finding the Roots of Chebyshev's polynomials in python
我想使用 Python 求任意阶切比雪夫多项式的根。我已经将 similar threads for Legendre polynomials. However, I have constructed my polynomials using the method defined 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 即使我可以,它也不适用于高阶多项式。
您可以通过使用反向列表中标题 "Basic Evaluation" here, and then using np.roots
下的方法找到切比雪夫多项式的系数来生成多项式的根。
使用 np.roots(f4)
无效,因为 roots
函数只接受多项式系数列表,而不是 lambda 函数。
代码:
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]
希望对您有所帮助。
我想使用 Python 求任意阶切比雪夫多项式的根。我已经将 similar threads for Legendre polynomials. However, I have constructed my polynomials using the method defined 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 即使我可以,它也不适用于高阶多项式。
您可以通过使用反向列表中标题 "Basic Evaluation" here, and then using np.roots
下的方法找到切比雪夫多项式的系数来生成多项式的根。
使用 np.roots(f4)
无效,因为 roots
函数只接受多项式系数列表,而不是 lambda 函数。
代码:
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]
希望对您有所帮助。