如何为多个变量声明具有多个限制的 sympy Piecewise

Han*_*han 6 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))
Run Code Online (Sandbox Code Playgroud)

我收到的错误是:

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
Run Code Online (Sandbox Code Playgroud)

Han*_*han 5

啊,有一个 sympyAnd函数可以解决这个问题:

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))
Run Code Online (Sandbox Code Playgroud)