繁体   English   中英

最大值的Sympy简化

[英]Sympy simplification of maximum

我不明白为什么 Sympy 不会将下面简化的表达式返回给我(不确定它是我代码中的错误还是 Sympy 的功能)。

import sympy as sp

a = sp.Symbol('a',finite = True, real = True)
b = sp.Symbol('b',finite = True, real = True)
sp.assumptions.assume.global_assumptions.add(sp.Q.positive(b))
sp.assumptions.assume.global_assumptions.add(sp.Q.negative(a))
sp.simplify(sp.Max(a-b,a+b))

我希望输出为 $a+b$,但 Sympy 仍然给我 $Max(ab,a+b)$。

谢谢; 如您所见,我是 Sympy 的初学者,因此感谢您提供任何提示/帮助。

结果当然应该是a + b ...

您可以通过在符号上设置假设来做到这一点,如下所示:

In [2]: a = Symbol('a', negative=True)                                                                                                         

In [3]: b = Symbol('b', positive=True)                                                                                                         

In [4]: Max(a - b, a + b)                                                                                                                      
Out[4]: a + b

您正在尝试使用新的假设系统,但该系统仍处于实验阶段,并未在 sympy 中广泛使用。 新假设不用于核心评估,因此例如 Max 函数不知道您已经在 a 和 b 上声明了全局假设,除非这些假设是在我上面显示的符号上声明的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM