Hi Dario,

On Mon, Oct 6, 2014 at 8:14 AM, Dario Beraldi <[email protected]> wrote:
> Hi Ondrej,
>
> Ok, thanks for letting me know. For the time being, would you agree that
> removing the root by exponentiation, as in solve(y**2 >= 0, is an acceptable
> workaround?

Looks like it, yes. See also the comments at the issue I posted.

>
> (I have started playing with sympy and I really like it, I might post more
> questions in the near future!)

Absolutely, please do!

Ondrej

>
> Dario
>
> On Monday, October 6, 2014 2:49:28 PM UTC+1, Ondřej Čertík wrote:
>>
>> Hi Dario,
>>
>> On Sun, Oct 5, 2014 at 6:05 AM, Dario Beraldi <[email protected]> wrote:
>> > Hello,
>> >
>> > Apologies if I'm missing something trivial here...
>> >
>> > I have the function y= sqrt(4*x**2 - 9) for which I want to know the
>> > real
>> > domain of definition. I.e. the answer should be: y is defined for x <=
>> > -3/2
>> > and x >= 3/2.
>> >
>> > If I try solve(y >= 0) I get a PolynomialError. I could do solve(y**2 >=
>> > 0)
>> > to get the "right" answer but it feels like a hack and I'm wondering
>> > whether
>> > there is a better strategy to solve this inequality. Any idea?
>> >
>> > I.m using sympy 0.7.5 and this below is the bit of code to reproduce my
>> > question above.
>> >
>> > Many thanks!
>> > Dario
>> >
>> > isympy
>> >
>> > x= symbols('x')
>> > y= sqrt(4*x**2 - 9)
>> >
>> > ## That's Ok:
>> > solve(y**2 >= 0) ## im(x) = 0 ∧ (re(x) ≥ 3/2 ∨ re(x) ≤ -3/2)
>> >
>> > ## Or even better:
>> > x= symbols('x', real= True)
>> > y= sqrt(4*x**2 - 9)
>> > solve(y**2 >= 0) ## x ≥ 3/2 ∨ x ≤ -3/2
>> >
>> > ## This doesn't work:
>> > x= symbols('x')
>> > y= sqrt(4*x**2 - 9)
>> > solve(y >= 0)
>> >
>> > ---------------------------------------------------------------------------
>> > PolynomialError                           Traceback (most recent call
>> > last)
>> > <ipython-input-14-8865cc4d86ab> in <module>()
>> > ----> 1 solve(y >= 0)
>> >
>> >
>> > /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sympy/solvers/solvers.pyc
>> > in solve(f, *symbols, **flags)
>> >     686         elif isinstance(fi, (bool, C.BooleanAtom)) or
>> > fi.is_Relational:
>> >     687             return reduce_inequalities(f,
>> > assume=flags.get('assume'),
>> > --> 688                                        symbols=symbols)
>> >     689
>> >     690         # Any embedded piecewise functions need to be brought
>> > out to
>> > the
>> >
>> >
>> > /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sympy/solvers/inequalities.pyc
>> > in reduce_inequalities(inequalities, assume, symbols)
>> >     514
>> >     515     for gen, exprs in poly_part.items():
>> > --> 516
>> > poly_reduced.append(reduce_rational_inequalities([exprs],
>> > gen, assume))
>> >     517
>> >     518     for gen, exprs in abs_part.items():
>> >
>> >
>> > /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/sympy/solvers/inequalities.pyc
>> > in reduce_rational_inequalities(exprs, gen, assume, relational)
>> >     219                     expr.together().as_numer_denom(), gen)
>> >     220             except PolynomialError:
>> > --> 221                 raise PolynomialError("only polynomials and "
>> >     222                     "rational functions are supported in this
>> > context")
>> >     223
>> >
>> > PolynomialError: only polynomials and rational functions are supported
>> > in
>> > this context
>>
>> I think you found a bug. Thanks for reporting this. I made this:
>>
>> https://github.com/sympy/sympy/issues/8206
>>
>> (Feel free to report similar bugs directly to the bug trucker if you
>> want.)
>>
>> Ondrej
>
> --
> 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 [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sympy.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/d430b751-95f4-4014-a210-2a464caa1237%40googlegroups.com.
>
> For more options, visit https://groups.google.com/d/optout.

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CADDwiVBQ2Sjzqp2%3D-uYLUe7KokjQ2FFF63VnhDhfiqax8z3K4Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to