[英]Get min/max of returned object of solver / sympy [Python]
我在Python脚本中使用sympy来获得不等式的解决方案。 然后,我想在返回的所有可能值中获取最小值和最大值,但无法找到方法。
返回的对象(x_sol)的类型为'And'。
x = Symbol("x", real=True)
a = 1
b = 2
c = 3
d = 4
e = 5
CM = Matrix([ [0,1,1,1,1], [1,0,a,b,c], [1,a,0,d,e], [1,b,d,0,x], [1,c,e,x,0] ])
x_sol = solve_univariate_inequality( det(CM) >= 0, x, S.Reals )
您可以使用xsol.as_set().boundary
:
import sympy as sym
x = sym.Symbol("x", real=True)
a, b, c, d, e = 1, 2, 3, 4, 5
CM = sym.Matrix([ [0,1,1,1,1], [1,0,a,b,c], [1,a,0,d,e], [1,b,d,0,x], [1,c,e,x,0] ])
x_sol = sym.solve_univariate_inequality( sym.det(CM) >= 0, x, sym.S.Reals )
x_set = x_sol.as_set()
x_min, x_max = x_set.boundary
print('{}, {}'.format(x_min, x_max))
版画
-sqrt(77)/2 + 9/2, sqrt(77)/2 + 9/2
知道人们如何找到答案通常比答案本身更有趣。 因此,这就是我找到上述答案的方法。 IPython具有一个非常有用的制表符完成功能。 通过输入x_sol.
然后按TAB键,
In [129]: x_sol.[TAB]
IPython显示了xsol
所有属性:
x_sol.args x_sol.as_content_primitive
x_sol.as_poly x_sol.as_set
x_sol.assumptions0 x_sol.atoms
...
输入x_sol.as_set?
提供有关属性或方法的文档:
In [129]: x_sol.as_set?
Signature: x_sol.as_set()
Docstring:
Rewrite logic operators and relationals in terms of real sets.
Examples
========
>>> from sympy import And, Symbol
>>> x = Symbol('x', real=True)
>>> And(x<2, x>-2).as_set()
(-2, 2)
File: ~/.virtualenvs/muffy/lib/python3.4/site-packages/sympy/logic/boolalg.py
Type: method
只需使用IPython探索可用的属性,就不难发现as_set
和boundary
产生了所需的值。
希望知道此技巧将有助于您将来更快地发现其他问题的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.