Sympy Won不能用小数简化或扩展指数小数、不能用、指数、Sympy

2023-09-03 09:25:15 作者:年少总有装逼梦

我试着简化n次方的一个巨大表达式,渐近性的一个结果是(n+1)^1.0,我注意到

f=n*((n+1)**1.0) sympy.expand(f)

特朗普突然 认怂 ,背后或是又一个大阴谋...

不起作用,它保持不变,而不是给n^2+n,所以我想知道是否有任何方法可以执行这样的操作

推荐答案

当幂为整数时,sympy将按预期展开您的表达式。如果能量存储为有理数或浮点数,它将无法工作。您的选择要么是使用整数重写表达式,要么编写一些代码来自动检查浮点数是否存储了一个整数(直到数字精度错误)并执行相应的操作。

这是一个起点:

def rewrite_polynomial(p):

    args_list = []

    if not p.is_Mul:
        return None
    for m in p.args:
        if not m.is_Pow:
            args_list.append(m)
        else:
            pow_val = m.args[1]
            if pow_val.is_Float:
                pow_val_int = int(pow_val)
                if pow_val.epsilon_eq(pow_val_int):
                    args_list.append(Pow(m.args[0],Integer(pow_val_int)))
                else:
                    args_list.append(m)
            else:
                args_list.append(m)                


    return Mul(*args_list)

n = Symbol('n')
f= n*((n+1)**1.0)
g = rewrite_polynomial(f)
print(g)
 
精彩推荐
图片推荐