Actually, thinking a bit more, I can get away with the assumption that x is
an integer (in practice numerically it can be any positive real, but that
won't matter for the formula's analysis I'm trying to do).
Le samedi 27 juillet 2024 à 18:00:16 UTC+2, Pierre H a écrit :
> Thanks a lot for your replies. I suspected it was about domain
> assumptions, but thanks to Oscar's example of the square root of -1 having
> two values it's got clear to me.
>
> Now, I can rise the bar to the next question: the example I gave was a
> minimal one, but the way I stumbled upon was slightly more elaborate:
>
> Let b=symbol('b') and a = 1+b,
> so that
> a**x * (1/a)**x
> is in fact
> (1+b) * (1/(1+b))**x
>
> This means Peter's suggestion (assume a,x positive), which applies to my
> case, cannot be applied for a. Indeed, I just reread the "old assumption
> mechanism" doc https://docs.sympy.org/latest/guides/assumptions.html and
> it seems that the assumption I need (b>-1) cannot be implemented. Indeed
> the doc says "At the time of writing (SymPy 1.7)", but I guess it's still
> valid in 2024, correct?
>
> Pierre
>
>
>
>
> Le samedi 27 juillet 2024 à 16:12:34 UTC+2, Oscar a écrit :
>
>> It is a classic question about SymPy. By default SymPy assumes that
>> all symbols represent arbitrary complex numbers. For the most part
>> only simplifications that are compatible with any complex numbers will
>> be applied either automatically or by explicit simplification
>> functions such as powsimp, simplify etc. I say "for the most part"
>> because some evaluation/simplification routines ignore degenerate
>> cases like x/x -> 1 even though x could be zero.
>>
>> In this case the question is whether (1/a)^x = 1/(a^x). Suppose that a
>> = -1 and x = 1/2 then we have:
>>
>> (1/(-1))^(1/2) = (-1)^(1/2) = i
>>
>> On the other hand
>>
>> 1/(-1)^(1/2) = 1/i = -i
>>
>> So for a = -1 and x = 1/2 we have (1/a)^x = -1/(a^x).
>>
>> Recognising that 1/a = a^-1 the more general question is when will
>> (a^x)^y be equal to a^(x*y). If all symbols are positive or if y is an
>> integer then this holds but more generally it does not necessarily
>> hold. From first principles SymPy defines x^y as being exp(log(x)*y)
>> where log should be understood as having a branch cut on the negative
>> reals so that log(x) = log(abs(x)) + I*arg(x) and arg(x) is in
>> (-pi,pi]. This branch cut determines when identities like (1/a)^x =
>> 1/a^x will hold.
>>
>> --
>> Oscar
>>
>> On Sat, 27 Jul 2024 at 13:49, <[email protected]> wrote:
>> >
>> > If you declare a to be positive, it simplifies with me.
>> >
>> >
>> >
>> > From: [email protected] <[email protected]> On Behalf Of
>> Pierre H
>> > Sent: Saturday, July 27, 2024 2:38 PM
>> > To: sympy <[email protected]>
>> > Subject: [sympy] Simplification of a^x * (1/a)^x: not equal to 1?
>> >
>> >
>> >
>> > Hello,
>> >
>> >
>> >
>> > This is perhaps a classical question, but since I'm only using SymPy
>> every now and then...
>> >
>> >
>> >
>> > I wonder why the expression a^x * (1/a)^x doesn't simplify to 1. See
>> code (with SymPy 1.12)
>> >
>> >
>> >
>> > a,x = symbols('a x')
>> > simplify(a**x * (1/a)**x)
>> >
>> >
>> >
>> > (then of course the variant a**x * (1/(a**x)) does simplify to 1).
>> >
>> >
>> >
>> > So is a SymPy issue that the power of x isn't propagated inside the
>> 1/(a) expression. Or I'm just missing a mathematical subtlety which
>> requires adding some assertions about x and a?
>> >
>> >
>> >
>> > Pierre
>> >
>> >
>> >
>> > --
>> > 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 view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/1b37bc0c-aa69-4e89-99d0-fb5700920dccn%40googlegroups.com.
>>
>>
>> >
>> > --
>> > 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 view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/003401dae023%246da70330%2448f50990%24%40gmail.com.
>>
>>
>>
>
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/4c72538d-b230-491c-8f61-c3bced87b44en%40googlegroups.com.