【问题标题】:sympy how to simplify expressions with a variable as exponentsympy 如何简化以变量为指数的表达式
【发布时间】:2020-10-27 17:52:15
【问题描述】:

我有这样一个表达式: 4^k/(12^k*A+4^k*B)

Python 代码是:

import sympy as sy
k,A,B=sy.symbols('k A B',real=True)
C=sy.Rational(4)**k/(sy.Rational(12)**k*A+sy.Rational(4)**k*B)

是否有任何 SymPy 函数能够简化表达式?类似于 MAXIMA 中的 radcan。 我尝试了 sy.simplify(C)、sy.factor(C)、sy.powsimp(C)、sy.radsimp(C)、sy.expand(C) 没有成功。

【问题讨论】:

    标签: sympy exponent simplification


    【解决方案1】:

    我们需要强制对整数进行因式分解,这可以使用factorint

    In [46]: C                                                                                                                                                    
    Out[46]: 
          k     
         4      
    ────────────
      k      k  
    12 ⋅A + 4 ⋅B
    
    In [47]: C.replace(lambda x: x.is_Integer, lambda x: Mul(*factorint(x, multiple=True), evaluate=False))                                                       
    Out[47]: 
                 k       
            (2⋅2)        
    ─────────────────────
             k          k
    A⋅(2⋅2⋅3)  + B⋅(2⋅2) 
    
    In [48]: expand(_)                                                                                                                                            
    Out[48]: 
            2⋅k       
           2          
    ──────────────────
     2⋅k  k      2⋅k  
    2   ⋅3 ⋅A + 2   ⋅B
    
    In [49]: cancel(_)                                                                                                                                            
    Out[49]: 
       1    
    ────────
     k      
    3 ⋅A + B
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多