我想连续绘制几个Jacobi多项式的零。Jacobi多项式的参数和阶数取决于特定的大小变量n。我想通过首先将多项式的系数提取到数组中来计算每个多项式的根。但是,coeffs()
由于Jacobi多项式是类的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]
您现在可以进行绘图。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句