我想连续地画出几个雅可比多项式的零点。Jacobi多项式的参数和次数依赖于某个大小变量n。我想通过首先将多项式的系数提取到一个数组中来计算每个多项式的根。但是,这不能使用coeffs()
命令来完成,因为雅可比多项式属于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'
发布于 2019-07-26 01:02:10
您需要先将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]
现在,您可以进行绘图了。
https://stackoverflow.com/questions/57211186
复制