首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何阻止SymPy在srepr()的输出中输出分数的浮点表示

如何阻止SymPy在srepr()的输出中输出分数的浮点表示
EN

Stack Overflow用户
提问于 2022-09-12 16:59:27
回答 1查看 45关注 0票数 0

我遇到的问题是,当我的渐近函数中有一个分数作为指数时,srepr计算这个分数并返回一个浮点数。我希望这个分数保持在表达式树输出中,而不是作为一个浮点数被计算和返回。

示例:函数=(x**3-7)^(3/7)

srepr(功能)

输出:“Pow(Pow(符号为‘x’),整数(3),整数(-7)),浮点数(‘0.42857142857142855’,precision=53)

向后执行此过程,上面的函数可以由

Pow(添加(Pow(x,3),-7),Rational(3,7))

其中,分数(3/7)用Rational表示。但是,如上所述,相同函数的srepr的输出将不包含"Rational“来表示该分数。O.O

同样的情况发生在我用一个SymPy函数来计算一个表达式时,比如“积分”,这个分数被转换成一个浮点数,而不是作为一个分数。我需要这个分数的原因是因为我正在进行手工集成,所以对这个分数的操作对于了解如何执行这个过程是很重要的。

如有任何帮助,将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-09-12 17:30:03

粗略地说,编写(x**3 - 7)^(3/7)时,Python将查看命令并执行除法3/7=0.428571428571。稍后,Python将看到符号对象x和SymPy将与其运算符“启动”,从而产生一个符号表达式。

在这些情况下,您有几种选择:

代码语言:javascript
复制
from sympy import *
var("x")

# Option 1: explicitly write the division as a rational
expr = (x**3 - 7)**Rational(3, 7)

# Options 2: sympify (ie, convert) one of the numbers to a SymPy object.
# Here, I'm going to convert the Python int 2 to a SymPy's Integer.
# So when Python interpret the following command, it will ask SymPy to
# perform the division.
expr = (x**3 - 7)**(S(2) / 3)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73692757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档