如何解决分段和最小/最大函数之间的Sympy转换
有没有办法将最小值/最大值转换为分段函数,反之亦然?例如:
x = Symbol('x')
Min(Max(x,0),1)
与分段函数相同:
⎧0 for x < 0
⎪
⎨x for x > 0 ∧ x < 1
⎪
⎩1 for x > 1
使用 sympy,您可以将其写为:
Piecewise(
(0,x < 0),(x,(x > 0) & (x < 1)),(1,x > 1)
)
可能有一个我不知道的数学术语。
解决方法
您可以使用重写从最小/最大到分段,但我不确定如何走另一条路(可能尚未实现):
In [15]: e = Min(Max(x,0),1)
In [16]: e
Out[16]: Min(1,Max(0,x))
In [17]: e.rewrite(Piecewise)
Out[17]:
⎧ 1 for x ≥ 1
⎪
⎨⎧0 for x ≤ 0
⎪⎨ otherwise
⎩⎩x otherwise
In [18]: piecewise_fold(_)
Out[18]:
⎧1 for x ≥ 1
⎪
⎨0 for x ≤ 0
⎪
⎩x otherwise
https://docs.sympy.org/latest/tutorial/simplification.html#rewrite https://docs.sympy.org/latest/modules/core.html#sympy.core.basic.Basic.rewrite
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。