You can't enter your expressions with `=` to create and Equality. You would 
have to reenter as Eq(5*x+2*y,10) or 
`parse_expr('5*x+2*y=10',transformations=T[1,9]')` (see 
[here](https://stackoverflow.com/a/73307040/1089161)).

Past that, there is no SymPy function that will solve this, but in 
PR https://github.com/sympy/sympy/pull/22389 I added code today that will 
do so.

Your equality will be treated like a function to maximize under the 
constrains that x<=1 and y<=1 (and both are nonnegative):

>>> func = 5*x+2*y-10
>>> cond = [x<=1, y<=1]
>>> LP(func, cond, [x,y])[:2]
(-3, {x: 1, y: 1})

So that function has a maximum value of -3 when x and y are 1. Now negate 
the function and repeat

>>> LP(-func, cond, [x,y])[:2]
(10, {x: 0, y: 0})

The max of the negated function is 10 when x and y are 0. So the min of the 
function is -10. You are interested in the case when the function is 0. 
Since the function is linear and has as bounds [-10, -3] which does not 
contain 0, it seems to me that this proves there is no solution.

/c
On Tuesday, August 9, 2022 at 10:46:55 AM UTC-5 m...@bokomoko.de wrote:

> Hi Jeremy,
>
> thanks for sharing your link and thanks for compiling the documentation. 
> And 
> indeed it helped, with the information I could easily fix it:
>
> rd@h370:~/tmp.nobackup$ cat test-sympy.py
> import sympy
>
> x, y, z = sympy.symbols('x y z')
> sympy.init_printing(use_unicode=True)
>
> print(sympy.solvers.inequalities.reduce_rational_inequalities([[x + 2 > 
> 0]], 
> x))
>
>
> print(sympy.solvers.inequalities.reduce_rational_inequalities([[x + 2 > 
> 0,x < 
> 5]], x))
> rd@h370:~/tmp.nobackup$ python3 test-sympy.py 
> (-2 < x) & (x < oo)
> (-2 < x) & (x < 5)
> rd@h370:~/tmp.nobackup$ 
>
> I read through your page and posted some feedback at
>
> https://github.com/sympy/sympy/pull/23768
>
> My real problem is somewhat more complex though:
>
> I want to find out if 
>
> f_vec+a*x_vec+b*y_vec+n*s_vec=sh_vec+c*xsh_vec+d*ysh_vec
>
> has a solution with
>
> 0<=a,b,c,d<=1
>
> All quantities with _vec are 3 dimensional vectors. I want to to find out 
> if 
> for a given set of vectors a solution exists or not.
>
> Extending my testcase in this direction does not work though:
>
> rd@h370:~/tmp.nobackup$ cat test-sympy.py
> import sympy
>
> x, y, z = sympy.symbols('x y z')
> sympy.init_printing(use_unicode=True)
>
> print(sympy.solvers.inequalities.reduce_rational_inequalities([[x + 2 > 
> 0]], 
> x))
>
> print(sympy.solvers.inequalities.reduce_rational_inequalities([[x*5 + y*2 
> = 
> 10,x <= 1, x >= 0, y <= 1, y >= 0]], x))
> rd@h370:~/tmp.nobackup$ python3 test-sympy.py 
> File "/home/rd/tmp.nobackup/test-sympy.py", line 9
> print(sympy.solvers.inequalities.reduce_rational_inequalities([[x*5 + y*2 
> = 10,x <= 1, x >= 0, y <= 1, y >= 0]], x))
> ^
> SyntaxError: invalid syntax
> rd@h370:~/tmp.nobackup$ 
>
> I suspect that reduce_rational_inequalities is the wrong approach here, 
> but 
> what would the the right functions to use?
>
> Any hint is welcome :-)
>
> Many thanks
> Rainer
>
> PS: Also thanks for hint towards less-verbose function calls. I typically 
> write it verbose, since I am not writing Python code too frequently, and 
> for 
> me the verbose version is something like a documentation, since I see 
> where 
> the functions come from.
>
> Am Samstag, 6. August 2022, 17:19:45 CEST schrieb Jeremy Monat:
> > Hi Ranier,
> > 
> > Here's a way to do it:
> > >>> import sympy
> > >>> x, y, z = sympy.symbols('x y z')
> > >>> sympy.solvers.inequalities.reduce_inequalities([x + 2 > 0, x < 5], x)
> > 
> > (-2 < x) & (x < 5)
> > 
> > reduce_inequalities is the top-level inequality reducer, which will call
> > other lower-level functions (such as reduce_rational_inequalities) as
> > needed. reduce_inequalities takes a simple list, rather than a nested 
> list,
> > of inequalities.
> > 
> > I'm actually drafting a guide page on this topic now; glad to know it's 
> of
> > interest! You can access the draft
> > <
> https://output.circle-artifacts.com/output/job/a1f8297d-6be8-4627-9f47-a969
> > 
> 709f9293/artifacts/0/doc/_build/html/guides/solving/solve-system-of-inequali
> > ties-algebraically.html>, and I'd appreciate any feedback (either here 
> or on
> > the pull request <https://github.com/sympy/sympy/pull/23768> on GitHub).
> > 
> > Best,
> > Jeremy
> > 
> > P.S. If you like, you can use less-verbose function calls by importing
> > 
> > reduce_inequalities and symbols from SymPy:
> > >>> from sympy import reduce_inequalities, symbols
> > >>> x, y, z = symbols('x y z')
> > >>> reduce_inequalities([x + 2 > 0, x < 5], x)
> > 
> > (-2 < x) & (x < 5)
> > 
> > On Sat, Aug 6, 2022 at 3:31 AM 'Rainer Dorsch' via sympy <
> > 
> > sy...@googlegroups.com> wrote:
> > > Hi,
> > > 
> > > I just started with sympy, and try to understand how to tell sympy, 
> what I
> > > want. I tried
> > > print(sympy.solvers.inequalities.reduce_rational_inequalities([[x + 2 >
> > > 0],[x
> > > < 5]], x))
> > > and expected
> > > (-2 < x) & (x < 5)
> > > but got
> > > (-oo < x) & (x < oo)
> > > Can anybody tell how I can tell sympy that x should satisfy both
> > > inequalities
> > > the same time?
> > > For me it seems sympy rather interprets the set of equations rather as 
> an
> > > "or"
> > > and not an "and"
> > > 
> > > Here is the full example
> > > 
> > > rd@h370:~/tmp.nobackup$ cat test-sympy.py
> > > import sympy
> > > 
> > > x, y, z = sympy.symbols('x y z')
> > > sympy.init_printing(use_unicode=True)
> > > 
> > > print(sympy.solvers.inequalities.reduce_rational_inequalities([[x + 2 >
> > > 0]],
> > > x))
> > > 
> > > 
> > > print(sympy.solvers.inequalities.reduce_rational_inequalities([[x + 2 >
> > > 0],[x
> > > < 5]], x))
> > > rd@h370:~/tmp.nobackup$ python3 test-sympy.py
> > > (-2 < x) & (x < oo)
> > > (-oo < x) & (x < oo)
> > > rd@h370:~/tmp.nobackup$
> > > 
> > > 
> > > Any hint is welcome.
> > > 
> > > Thanks
> > > Rainer
> > > 
> > > 
> > > --
> > > Rainer Dorsch
> > > http://bokomoko.de/
> > > 
> > > 
> > > --
> > > You received this message because you are subscribed to the Google 
> Groups
> > > "sympy" group.
> > > To unsubscribe from this group and stop receiving emails from it, send 
> an
> > > email to sympy+un...@googlegroups.com.
> > > To view this discussion on the web visit
> > > https://groups.google.com/d/msgid/sympy/4120287.OZXsGyJSKq%40h370.
>
>
> -- 
> Rainer Dorsch
> http://bokomoko.de/
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sympy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/ad558bcb-f8b8-4a05-aa1d-0999135e86a4n%40googlegroups.com.

Reply via email to