如何使用 sympy 从给定数组创建符号多项式?

How to create symbol polynomial from given array with sympy?

我正在尝试计算一些多项式,给定输入分子和分母多项式作为系数数组。

如何从这些数组创建多项式?

例如:

输入:

den= [2,3,4]
num= [1,3]

输出: (s+3)/(s^2+3*s+4)

我需要使用符号,因为我还需要将结果除以其他多项式并执行进一步的多项式计算。

P.S sympy适合这个吗?我通常会在 matlab 中解决此类问题,但我想扩展我的知识。

我想你想要的是(s+3)/(2*s^2+3*s+4),你的原文表达有误。而在Python中,^不是power,power是**.

你只需要一个普通的Python列表理解:

from sympy import poly
from sympy.abc import s

den_ = sum(co*s**i for i, co in enumerate(reversed(den)))
num_ = sum(co*s**i for i, co in enumerate(reversed(num)))
res = num_/den_

您可以执行以下操作:

den = [2, 3, 4]
num = [1, 3]
x = symbols('x')
Poly(num, x)/Poly(den, x)

这将为分子和分母(不仅仅是表达式)创建 Poly 对象。系数从 x 的最高次方开始列出。

请注意,除法的结果是一个普通表达式,因为 SymPy 中没有 RationalFunction 类型。如果要将 polys 模块中的工具应用于分子和分母,请将它们作为一个元组分开。