Ah, apparently the core is looking at assumptions and automatically simplifies based on them. I don't think that any automatic simplification should happen based on assumptions.
Aaron Meurer On Thu, Feb 26, 2015 at 6:20 PM, Paul Royik <[email protected]> wrote: > Thank you. > Got it! > > On Friday, February 27, 2015 at 1:52:32 AM UTC+2, Ondřej Čertík wrote: >> >> On Thu, Feb 26, 2015 at 4:05 PM, Paul Royik <[email protected]> wrote: >> > It doesn't work if x is positive. >> >> Indeed, looks like a bug. As a workaround, you can always substitute >> general "x" for the positive "x", then it will work: >> >> In [4]: x = Symbol("x", positive=True) >> >> In [5]: powsimp(sqrt(x)*sqrt(x-4), force=True) >> Out[5]: >> ___ _______ >> ╲╱ x ⋅╲╱ x - 4 >> >> In [6]: powsimp((sqrt(x)*sqrt(x-4)).subs(x, Symbol("x"), force=True) >> ...: >> KeyboardInterrupt >> >> In [6]: powsimp((sqrt(x)*sqrt(x-4)).subs(x, Symbol("x")), force=True) >> Out[6]: >> ___________ >> ╲╱ x⋅(x - 4) >> >> >> > In fact, when x is positive, 1/sqrt(x*(x-4)) automatically converted to >> > 1/sqrt(x)/sqrt(x-4) >> >> The same trick: >> >> In [7]: powsimp(1/(sqrt(x)*sqrt(x-4)).subs(x, Symbol("x")), force=True) >> Out[7]: >> 1 >> ───────────── >> ___________ >> ╲╱ x⋅(x - 4) >> >> >> Ondrej >> >> > >> > On Thursday, February 26, 2015 at 11:23:31 PM UTC+2, Aaron Meurer wrote: >> >> >> >> See http://docs.sympy.org/latest/tutorial/simplification.html#powers. >> >> powsimp(expr, force=True) will do what you want. >> >> >> >> Aaron Meurer >> >> >> >> On Thu, Feb 26, 2015 at 12:18 PM, Paul Royik <[email protected]> >> >> wrote: >> >> > I need something more general >> >> > >> >> > On Thursday, February 26, 2015 at 7:50:15 PM UTC+2, John Peterson >> >> > wrote: >> >> >> >> >> >> >> >> >> >> >> >> On Thursday, February 26, 2015 at 8:32:11 AM UTC-7, Paul Royik >> >> >> wrote: >> >> >>> >> >> >>> What is the best way to convert sqrt(x)*sqrt(x-4) to sqrt(x^2-4x) >> >> >>> or >> >> >>> (x^2+5x+4)/sqrt(x)/sqrt(x-4) to (x^2+5x+4)/sqrt(x^2-4x) >> >> >>> >> >> >>> I tried replace, but it doesn't work in second case. >> >> >> >> >> >> >> >> >> Be careful, they aren't equal for all values of x, but subs() will >> >> >> do >> >> >> this >> >> >> if you are willing to be explicit... >> >> >> >> >> >>> #!/usr/bin/env python >> >> >>> from sympy import * >> >> >>> print sympify('(x**2 + 5*x + 4) / sqrt(x) / >> >> >>> sqrt(x-4)').subs(sympify('sqrt(x)*sqrt(x-4)'), sympify('sqrt(x**2 - >> >> >>> 4*x)')) >> >> >> >> >> >> >> >> >> Output: >> >> >> >> >> >>> (x**2 + 5*x + 4)/sqrt(x**2 - 4*x) >> >> >> >> >> >> >> >> > >> >> > -- >> >> > 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/a20128fc-d1bd-479e-8845-a581cfc6b7d4%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/dc099057-8529-4f12-ae42-ed7f9e89b98e%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/b9754512-debb-4099-bfab-3724b3be1568%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/CAKgW%3D6LQ%3Dvo4cQ9nFsm_TcYP-6BajE%2B%2B2NE9djbYHjR02TqPFA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
