问题
在我的研究中,我找不到任何与分段函数中的关系值相关的示例。虽然我用 uni_dis 方法得到了上限值和下限值,但我仍然坚持将这些值转换为分段函数。是什么原因?
- from sympy import Symbol, Piecewise
- import sympy as sym
- import sympy.plotting as syp
- import math
- a = Symbol('a')
- b = Symbol('b')
- x = Symbol('x')
- function = 1 / abs(a-b)
- def uni_dis(lower, upper):
- if lower > upper:
- lower, upper = upper, lower
- uniform = Piecewise((0, x < lower), (0, x > upper), (function.subs({a:lower, b:upper}), x >= lower and x <= upper))
- syp.plot(uniform.subs((x,-10,10), title="uni_dis"))
- uni_dis(231, 675)
复制代码
我的错误信息如下:
- TypeError Traceback (most recent call last)
- <ipython-input-3-c28135b22fc4> in <module>
- ----> 1 uni_dis(231, 675)
- <ipython-input-2-e4a205990c2a> in uni_dis(lower, upper)
- 2 if lower > upper:
- 3 lower, upper = upper, lower
- ----> 4 uniform = Piecewise((0, x < lower), (0, x > upper), (function.subs({a:lower, b:upper}), x >= lower and x <= upper))
- 5 syp.plot(uniform.subs((x,-10,10), title="uni_dis"))
- C:\ProgramData\Anaconda3\lib\site-packages\sympy\core\relational.py in __nonzero__(self)
- 374
- 375 def __nonzero__(self):
- --> 376 raise TypeError("cannot determine truth value of Relational")
- 377
- 378 __bool__ = __nonzero__
- TypeError: cannot determine truth value of Relational
复制代码
回答
您应该将 x >= lower 和 x <= upper 修改为 (x >= lower) &amp; (x <= 上) 。
问题是使用 SymPy 对象的逻辑评估可能会返回另一个无法推断为真或假的符号逻辑。
您可以看到 (x >= lower).__class__ 如何返回另一个 sympy 不等式实例。
|