Sympy Won不能用小数简化或扩展指数 [英] Sympy won't simplify or expand exponential with decimals

查看:0
本文介绍了Sympy Won不能用小数简化或扩展指数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试着简化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)

这篇关于Sympy Won不能用小数简化或扩展指数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆