获取solver/sympy[Python]返回对象的最小值/最大值

2024-10-03 15:35:35 发布

您现在位置: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 )

Tags: and对象脚本true类型cmsymbolreal
1条回答
网友
1楼 · 发布于 2024-10-03 15:35:35

您可以使用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))

印刷品

^{pr2}$

知道人们如何找到答案往往比答案本身更有趣。 下面是我如何找到上面的答案。 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和{}产生了所需的值。在

希望知道这个技巧能帮助你在将来更快地找到解决其他问题的方法。在

相关问题 更多 >