Come combinare esponenti?(x ** A) ** B=> x ** (A * B)?
Domanda
Come semplificare Esponenti in Equazioni in Sympy
from sympy import symbols
a,b,c,d,e,f=symbols('abcdef')
j=(a**b**5)**(b**10)
print j
(a**(b**5))**(b**10) #ans even after using expand simplify
# desired output
a**(b**15)
.
E se non è possibile con Sympy quale modulo dovrei importare in Python?
Modifica Anche se definisco "B" come reale, e anche tutti gli altri simboli
b= simboli ('b', real= true) non ottenere esponenti semplificati Semplifica solo se gli esponenti sono costanti
a=symbols('a',real=True)
b=symbols('b',real=True)
(a**5)**10
a**50 #simplifies only if exp are numbers
(a**b**5)**b**10
(a**(b**5))**b**10 #no simplification
. Soluzione
(x m ) n = x mn è vero solo se m, n sono reali .
>>> import math
>>> x = math.e
>>> m = 2j*math.pi
>>> (x**m)**m # (e^(2πi))^(2πi) = 1^(2πi) = 1
(1.0000000000000016+0j)
>>> x**(m*m) # e^(2πi×2πi) = e^(-4π²) ≠ 1
(7.157165835186074e-18-0j)
.
afaik, Sympy supporta numeri complessi , quindi credo che questa semplificazione non dovrebbeAi termine a meno che tu non sia possibile dimostrare che b
è reale.
.
Modifica: è anche falso se x non è positivo.
>>> x = -2
>>> m = 2
>>> n = 0.5
>>> (x**m)**n
2.0
>>> x**(m*n)
-2.0
.
Modifica (da Gnibbler): Ecco l'esempio originale con le restrizioni di Kenny applicate
>>> from sympy import symbols
>>> a,b=symbols('ab', real=True, positive=True)
>>> j=(a**b**5)**(b**10)
>>> print j
a**(b**15)
. Altri suggerimenti
a,b,c=symbols('abc',real=True,positive=True)
(a**b**5)**b**10
a**(b**15)#ans
. Questo può essere correlato a Questo bug . .