将分数作为因子 [英] Keep fractions as factors

查看:3
本文介绍了将分数作为因子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在许多情况下,我希望将分数的分子和分母中的符号严格分组到该分数中。例如,我可能想要这样:

16   1
--*-----*(a + b)
37 4*a*b

而不是更简化的

4(a + b)
--------
 37*a*b

在经历了大量的暴力实验后,我预计会是这样的:

from sympy import Mul, Rational, pretty
from sympy.abc import a, b

left = Rational(16, 37)
center = 1 / (4*a*b)
right = a + b
expr = Mul(left, center, right, evaluate=False)

print(pretty(expr))

以生成我上面给出的第一个示例。

相反,我得到了这个邪恶的可憎的东西:

     1          
16*-----*(a + b)
   4*a*b        
----------------
       37       

这似乎真的很容易做到,我只是错过了一些东西。

在我写这篇文章的时候,我确实找到了一些可以工作的东西(在下面我自己的答案中给出了),但它似乎是一种老套的解决办法,而且不是很令人满意……这让我认为这可能是一个错误,但我不确定。

推荐答案

感谢this answer,我发现使用UnevaluatedExpr给了我想要的东西。此修改后的代码段:

from sympy import Mul, pretty
from sympy import UnevaluatedExpr
from sympy.abc import a, b

left = UnevaluatedExpr(16) / 37
center = 1 / (4*a*b)
right = a + b
expr = Mul(left, center, right, evaluate=False)

print(pretty(expr))

给予:

16   1          
--*-----*(a + b)
37 4*a*b

但是,这感觉真的很麻烦。sympy docs中的所有内容似乎都表明,使用Rational是从数字文字创建分数的正确方法。

这篇关于将分数作为因子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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