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将按预期展开表达式。如果电源存储为有理数或浮点数,它将不起作用。您可以选择使用整数重写表达式,或者编写一些代码来自动检查浮点是否存储整数(最高为数字精度错误),并相应地执行操作。你知道吗
这是一个起点:
相关问题 更多 >
编程相关推荐