如何解决如何在Sympy中分解平方项
我正在使用带有sympy(1.6.2)的python(3.7.3)存储具有平方项和非平方项的函数,每个项都是两个变量的乘积。
例如,
>> import sympy as sy
>> x = sy.Symbol('x')
>> y = sy.Symbol('y')
>> F = x*x+x*y
>> print(F)
x**2+x*y
我希望能够遍历这些术语并获取每个操作数。 例如,
terms = F.expand(basic=True).args
for term in terms
(t0,t1) = term.args
print('t0:{},t1:{}'.format(t0,t1))
# do some stuff using t0,t1
这适用于x*y
期,但不适用于x**2
期。
>> print((x*y).args)
(x,y)
>> print((x**2).args) # I want this to be (x,x)
(x,2)
我尝试运行(x**2).expand()
,但这似乎是表达式的完全扩展版本。
我的问题是双重的:
解决方法
您可以定义一个自定义函数,以所需的方式进行分解:
def get_factors(expr):
if expr.func == sy.Mul:
return expr.args
elif expr.func == sy.Pow:
return tuple(expr.args[0] for _ in range(expr.args[1]))
else:
raise NotImplementedError()
用法:
>>> a,b = terms
>>> get_factors(a)
(x,x)
>>> get_factors(b)
(x,y)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。