python 在Sympy中解决不等式

ruoxqz4g  于 2023-05-27  发布在  Python
关注(0)|答案(1)|浏览(197)

我试图解决一个简单的线性不等式在Sympy,但似乎不能让它工作。基本上,我希望能够计算a的最佳值,当不等式恰好为假时。

import sympy

num_attractors = 4
attractor_size = 64
network_size = 256
a, s, n = sympy.symbols('a s n')
expr = a * (s + 16) <= n

if not expr.subs([(a, num_attractors), (s, attractor_size), (n, network_size)]):
    # compute optimal value for a i.e., the closest integer a s.t. a <= n / (s + 16)

我试过使用solve(expr, a , sympy.Integer)sympy.solvers.inequalities.reduce_inequalities(expr,a),但似乎无法理解它们的输出。

yhived7q

yhived7q1#

solveset可以使用:

if expr.subs([(a, num_attractors), (s, attractor_size), (n, network_size)]) != True:
    asol = solveset(expr.subs([(s, attractor_size), (n, network_size)]),a,S.Integers)
>>> asol
{..., 2, 3}
>>> _.sup
3

你也可以只取等式解的floor(符号化地这样做):

>>> ans = floor(solve(expr.lhs - expr.rhs, a)[0]); ans
floor(n/(s + 16))

相关问题