Pregunta

cómo simplificar exponentes en ecuaciones en 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)

y si no es posible con sympy ¿qué módulo debo importar en python?

editarincluso si defino 'b' como real y también todos los demás símbolos

b = símbolos ('b', real = true) no obtener exponentes simplificados, simplifica solo si los exponentes son constantes

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
¿Fue útil?

Solución

(Xmetro)norte =xMinnesota es verdad sólo si m, n son reales.

>>> 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)

HASTA DONDE SE, Sympy soporta números complejos, por lo que creo que esta simplificación no debe hacerse a menos que puedas demostrar b es real.


Editar:También es falso si x no es positivo.

>>> x = -2
>>> m = 2
>>> n = 0.5
>>> (x**m)**n
2.0
>>> x**(m*n)
-2.0

Editar (por gnibbler):Aquí está el ejemplo original con las restricciones de Kenny aplicadas.

>>> from sympy import symbols 
>>> a,b=symbols('ab', real=True, positive=True)
>>> j=(a**b**5)**(b**10)
>>> print j
a**(b**15)

Otros consejos

a,b,c=symbols('abc',real=True,positive=True)
(a**b**5)**b**10
a**(b**15)#ans

Esto puede estar relacionado con este error .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top