如何使用 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]

您现在可以进行绘图了。