如何结合指数?(x**a)**b => x**(a*b)?

use*_*706 4 python sympy exponent simplify

如何简化方程中的方程中的指数

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)
Run Code Online (Sandbox Code Playgroud)

如果不能与sympy在python中导入哪个模块?

编辑 即使我将'b'定义为真实,也包括所有其他符号

b =符号('b',real = True)没有得到简化的指数,只有当指数是常数时它才会简化

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
Run Code Online (Sandbox Code Playgroud)

ken*_*ytm 7

(x m)n = x mn 仅在m,n为真时才为真.

>>> 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)
Run Code Online (Sandbox Code Playgroud)

AFAIK,sympy支持复数,因此我认为除非你能证明b是真实的,否则不应该进行这种简化.


编辑:如果x不是正数,也是假的.

>>> x = -2
>>> m = 2
>>> n = 0.5
>>> (x**m)**n
2.0
>>> x**(m*n)
-2.0
Run Code Online (Sandbox Code Playgroud)

编辑(通过gnibbler):这是应用了Kenny限制的原始示例

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

  • @ jed123,你应该接受肯尼的回答 (2认同)