Sympy不会用小数简化或扩展指数

2024-05-08 14:58:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图简化n的幂的一个巨大表达式,sympy的一个结果抛出了一个(n+1)^1.0,我注意到

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

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


Tags: 方法表达式expandsympy
1条回答
网友
1楼 · 发布于 2024-05-08 14:58:55

当幂为整数时,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)

相关问题 更多 >