我有一个基于sympy计算的表达式:

sqrt(pi)*(0.333333333333333*a + 0.333333333333333*b - 2.66666666666667*c**2)

其中a,b,c是符号,并希望对其进行解析,以便将浮点数替换为如下形式的有理数:
sqrt(pi)*(1/3*a + 1/3*b - 8/3*c**2)

我知道该怎么做
In[24] Rational(str(0.333333333333333)).limit_denominator(1000)

Out[24]: 1/3

但是还不太了解如何解析原子并仅选择浮点原子,然后代回有理数逼近。

在表达式中进行这些替换的最明智的方法是什么?

最佳答案

使用 nsimplify :

>>> print(nsimplify(sqrt(pi)*(0.333333333333333*a + 0.333333333333333*b - 2.66666666666667*c**2)))
sqrt(pi)*(a/3 + b/3 - 8*c**2/3)

关于python - 如何在sympy表达式中用有理数替换浮点数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21005132/

10-12 07:11