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

时间:2018-01-30 22:03:58

标签: python sympy polynomials

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

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

E.g:

输入

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

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

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

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

2 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

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

这会为分子和分母(而不仅仅是表达式)创建Poly对象。系数从x的最高功率列出。

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

答案 1 :(得分:1)

我认为你想要的是(s+3)/(2*s^2+3*s+4),原始表达中有一个拼写错误。在Python中,^不是权力,权力是**

你只需要一个普通的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_