在代码的某个时刻,我在sympy符号上添加了一个上限约束。 sympy.refine(x, sympy.Q.positive(upper_bound - x))
我想从符号“ x”中以编程方式检索upper_bound(和其他约束)的值。任何想法如何实现这一目标?
干杯
精简函数无法以这种方式工作-只是在给定约束的情况下简化了表达式。例如:
In [54]: import sympy
In [55]: x = sympy.S('x')
In [56]: expr = sympy.S('sqrt(x**2)')
In [57]: sympy.refine(expr, sympy.Q.positive(x))
Out[57]: x
In [58]: sympy.refine(expr, sympy.Q.negative(x))
Out[58]: -x
In [59]: sympy.refine(expr, sympy.Q.real(x))
Out[59]: Abs(x)
不幸的是,目前使用不平等似乎没有做任何有用的事情:
In [62]: sympy.refine(expr, sympy.Q.is_true(x>0))
Out[62]: sqrt(x**2)
您可能可以对solveset做一些有用的事情:
In [68]: expr = sympy.S('A * x**2 + B * x + C')
In [69]: sympy.solveset(expr, x, sympy.Interval(1,10))
Out[69]: ConditionSet(x, Eq(A*x**2 + B*x + C, 0), [1, 10])
也许是一个更有用的示例:
In [19]: a = sympy.S('(x**2)*(sin(x)+x)')
In [20]: x = sympy.S('x')
In [25]: b = sympy.solveset(a,x,sympy.Interval(-2,2))
In [26]: b
Out[26]: ConditionSet(x, Eq(x + sin(x), 0), [-2, 2])
In [34]: b.base_set
Out[34]: [-2, 2]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句