python - 如何组合指数? (x**a)**b => x**(a*b)?

标签 python simplify sympy exponent

如何在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)

如果不能使用 sympy,我应该在 python 中导入哪个模块?

编辑 即使我将“b”定义为实数,所有其他符号也是如此

b=symbols('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

最佳答案

(xm)n = xmn 为真 only if m, n are real .

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

据我所知,sympy supports complex numbers ,所以我认为不应该进行这种简化,除非你能证明 b 是真实的。


编辑:如果 x 不是正数,它也为假。

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

编辑(由 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)

关于python - 如何组合指数? (x**a)**b => x**(a*b)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3274487/

相关文章:

python - 如何在Python中求解两个矩阵的方程?

python - BeautifulSoup 排除特定标签内的内容

jquery - 简化这个 jQuery 代码?

Sympy 简化正弦

c++ - 我可以使用什么 C++ 库来创建和简化贝塞尔曲线

python - 欧拉-拉格朗日的 Sympy 隐式微分

python - 简化 SymPy 中的条件积分

python - networkx 没有给出加权图的所有最短路径

python - 如何找到可能有重复数字的 3 个列表之间的差异

python - LabelEncoder fit_transform() 函数中的问题