如何使用 SymPy 提取雅可比多项式的系数
How to extract coefficients of Jacobi polynomial using SymPy
我想连续绘制几个雅可比多项式的零点。雅可比多项式的参数和次数取决于一定大小的变量 n。我想通过首先将多项式的系数提取到数组中来计算每个多项式的根。但是,这不能用 coeffs()
命令来完成,因为 Jacobi 多项式是 class sympy.core.add.Add
,它没有 coeffs()
作为属性。关于如何克服这个问题有什么建议吗?
import matplotlib.pyplot as plt
init_printing()
x = Symbol("x")
def show_roots(n,a,b,c):
for k in range (1,n+1):
p = jacobi(a*k,-(a+b)*k,(b+c)*k,x)
coeff = p.coeffs(x)
roots = numpy.roots(coeff)
plt.plot(roots)
plt.show()
plt.pause(3)
当我尝试使用特定值 show_roots 时显示的错误:
AttributeError: 'Add' object has no attribute 'coeffs'
您需要先将 Add
转换为 Poly
,然后对结果调用 coeffs()
。
import matplotlib.pyplot as plt
import sympy
import numpy
x = sympy.symbols('x')
def show_roots(n,a,b,c):
for k in range (1,n+1):
p = sympy.jacobi(a*k,-(a+b)*k,(b+c)*k,x)
coeff = sympy.poly(p).coeffs()
roots = numpy.roots(coeff)
print(roots)
show_roots(3,1,2,3)
给予
[2.]
[2.+0.65465367j 2.-0.65465367j]
[2.24801968+0.j 1.87599016+0.92968658j 1.87599016-0.92968658j]
您现在可以进行绘图了。
我想连续绘制几个雅可比多项式的零点。雅可比多项式的参数和次数取决于一定大小的变量 n。我想通过首先将多项式的系数提取到数组中来计算每个多项式的根。但是,这不能用 coeffs()
命令来完成,因为 Jacobi 多项式是 class sympy.core.add.Add
,它没有 coeffs()
作为属性。关于如何克服这个问题有什么建议吗?
import matplotlib.pyplot as plt
init_printing()
x = Symbol("x")
def show_roots(n,a,b,c):
for k in range (1,n+1):
p = jacobi(a*k,-(a+b)*k,(b+c)*k,x)
coeff = p.coeffs(x)
roots = numpy.roots(coeff)
plt.plot(roots)
plt.show()
plt.pause(3)
当我尝试使用特定值 show_roots 时显示的错误:
AttributeError: 'Add' object has no attribute 'coeffs'
您需要先将 Add
转换为 Poly
,然后对结果调用 coeffs()
。
import matplotlib.pyplot as plt
import sympy
import numpy
x = sympy.symbols('x')
def show_roots(n,a,b,c):
for k in range (1,n+1):
p = sympy.jacobi(a*k,-(a+b)*k,(b+c)*k,x)
coeff = sympy.poly(p).coeffs()
roots = numpy.roots(coeff)
print(roots)
show_roots(3,1,2,3)
给予
[2.]
[2.+0.65465367j 2.-0.65465367j]
[2.24801968+0.j 1.87599016+0.92968658j 1.87599016-0.92968658j]
您现在可以进行绘图了。