2016-08-19 138 views
3

在sympy中,如何声明Piecewise函数对多个变量的子函数有多个限制?如何声明sympy具有多个变量的多个限制的分段

这里是我的背景和尝试:

from sympy import Piecewise, Symbol, exp 
from sympy.abc import z 
x1 = Symbol('x1') 
x2 = Symbol('x2') 
f = 2*pow(z,2)*exp(-z*(x1 + x2 + 2)) 
p = Piecewise((f, z > 0 and x1 > 0 and x2 > 0), (0, True)) 

我收到的错误是:

TypeError         Traceback (most recent call last) 
<ipython-input-47-5e3db02fe3dc> in <module>() 
----> 1 p = Piecewise((f, z > 0 and x1 > 0 and x2 > 0), (0, True)) 

C:\Anaconda3\lib\site-packages\sympy\core\relational.py in __nonzero__(self) 
    193 
    194  def __nonzero__(self): 
--> 195   raise TypeError("cannot determine truth value of Relational") 
    196 
    197  __bool__ = __nonzero__ 

TypeError: cannot determine truth value of Relational 

回答

2

啊,对于这样的sympy And功能:

from sympy import Piecewise, Symbol, exp, And 
from sympy.abc import z 
x1 = Symbol('x1') 
x2 = Symbol('x2') 
f = 2*pow(z,2)*exp(-z*(x1 + x2 + 2)) 
p = Piecewise((f, And(z > 0, x1 > 0, x2 > 0)), (0, True))