如何使用 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
模块中的工具应用于分子和分母,请将它们作为一个元组分开。
我正在尝试计算一些多项式,给定输入分子和分母多项式作为系数数组。
如何从这些数组创建多项式?
例如:
输入:
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
模块中的工具应用于分子和分母,请将它们作为一个元组分开。