我有以下代码:
l = 2
h = 1
p = 2
q = -2
x = Symbol('x')
f = Piecewise ( (0, x < 0),
(p, 0 <= x <= l/3),
(h/l * x - h, l/3 < x < 2*l/3),
(q, 2*l/3 <= x <= l),
(0, x > l)
)
导致错误:
TypeError: cannot determine truth value of Relational
定义此功能的正确方法是什么?我需要同情,因为我打算稍后整合它。
答案 0 :(得分:3)
SymPy的分段课does not support chained inequalities,如And(0 < x, x < 1)
。可以使用0 <= x
代替,但在您的示例中,这是不必要的。回想一下,从左到右评估条件;第一个评估为True的人获胜。因此,您在第二个条件中不需要l/3 < x
,或者在第三个条件中不需要f = Piecewise ( (0, x < 0),
(p, x <= l/3),
(h/l * x - h, x < 2*l/3),
(q, x <= l),
(0, True)
)
等。您的函数应该由
visibility