如何解决如何在sympy中隔离多项式中的项的系数?
在 Python 中,我做了一些 SymPy 计算,产生了一个充满多项式的数组,例如:
a*(a*(a*(a + b) + b*(a + b)) + b*(a*(a + b) + b*(a + b))) + b*( a*(a*(a + b) + b*(a + b)) + b*(a*(a + b) + b*(a + b)))
请注意,此示例恰好简化为 (a+b)**4,但显然情况并非总是如此。那么如何将此表达式转换为以下形式:
c_1*a**4 + c_2*a**3*b + ... + c_n*b**4
一旦我有了这样的表达式,我将如何提取指数 c_1、...、c_n? 我所拥有的只是 .exp 命令,但它仅适用于 a**n 形式的表达式(即 a 和 b 不能混合且系数为 1)。
任何帮助将不胜感激。
解决方法
Poly 类很有用(使用 isympy
运行)
from sympy import Poly
from sympy.abc import a,b
expr = a*(a*(a*(a + b) + b*(a + b)) + b*(a*(a + b) + b*(a + b))) + b*(a*(a*(a + b) + b*(a + b)) + b*(a*(a + b) + b*(a + b)))
poly = Poly(expr)
poly.as_expr()
输出:
4 3 2 2 3 4
a + 4⋅a ⋅b + 6⋅a ⋅b + 4⋅a⋅b + b
并提取系数 c_1,...,c_n,我会这样做:
poly.coeffs()
输出:
[1,4,6,1]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。