Sympy Won不能用小数简化或扩展指数 [英] Sympy won't simplify or expand exponential with decimals
本文介绍了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屋!
查看全文