【发布时间】:2016-01-08 09:57:46
【问题描述】:
我在 Sympy 中有一个表达式(比如
-M - n + x(n)
) 我会 喜欢创建一个正式的线性函数,说 f,并将它应用到我的表达式中,以便在简化后得到:
-f(M) - f(n) + f(x(n))
是否可以告诉 sympy 已验证线性等属性?
一个非常老套的方法是将函数 f 应用于求和中的每个子表达式。 例如,当给出一个像我给出的第一个表达式时,简单地访问出现在总和中的术语会很好(这里是
[-M, -n , x(n)]
然后将 f 映射到列表上并对其求和以获得预期的结果。
有没有一种简单的方法可以做到这一点,或者我必须通过表达式的语法树?
【问题讨论】:
-
你可以把 f 想象成一个运算符,写成
f*(-M - n + x(n))。 -
同时我发现如果 S 是一个表示 sum 的表达式,S.args 返回构成元素的列表。然后我给出的策略效果很好(即使它很老套)
-
您可以使用
Add.make_args(S),即使 S 不是总和也可以使用。 -
@user70925 如果您找到了问题的解决方案,您可以发布它作为您问题的答案。