本文介绍了将分数作为因子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在许多情况下,我希望将分数的分子和分母中的符号严格分组到该分数中。例如,我可能想要这样: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
是从数字文字创建分数的正确方法。
这篇关于将分数作为因子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!