2016-08-19 36 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))