How to create symbol polynomial from given array with sympy?

问题描述 投票:0回答:3

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

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

例:

输入:

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

输出:

(s+3)/(s^2+3*s+4)

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

P.S

sympy
适合这个吗?我通常会在
matlab
中解决这样的事情,但我想扩展我的知识。

python sympy polynomials
3个回答
4
投票

您可以执行以下操作:

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

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

注意除法的结果是一个普通的表达式,因为 SymPy 中没有 RationalFunction 类型。如果要将

polys
模块中的工具应用于分子和分母,请将它们作为元组分开。


2
投票

我觉得你想要的是

(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_

0
投票

使用类方法

Poly.from_list
。列表的项是按降序排列的多项式的系数等于
len(list)-1

from sympy import Symbol, Poly

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

# symbol
s = Symbol('s')

# polynomial
n = Poly.from_list(num, x)
d = Poly.from_list(den, x)

# expression
e = n/d
© www.soinside.com 2019 - 2024. All rights reserved.