我试图计算一些多项式,给定输入分子和分母多项式作为系数数组。
如何从这些数组中创建多项式?
E.g:
输入
den= [2,3,4]
num= [1,3]
输出:
(s+3)/(s^2+3*s+4)
我需要使用符号,因为我还需要将结果除以其他多项式并执行进一步的多项式计算。
P.S sympy
适合这个吗?我通常会在matlab
中解决这类问题,但我想扩展我的知识。
答案 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_