如何利用SymPy提取Jacobi多项式的系数

2024-09-27 07:33:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想连续画几个雅可比多项式的零点。雅可比多项式的参数和阶数取决于一个特定的尺寸变量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)

尝试使用特定值显示\u根时显示的错误: AttributeError: 'Add' object has no attribute 'coeffs'


Tags: 命令add参数尺寸showplt数组sympy
1条回答
网友
1楼 · 发布于 2024-09-27 07:33:27

首先需要将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]

你现在可以做阴谋了。你知道吗

相关问题 更多 >

    热门问题