我遇到的问题是,当我的渐近函数中有一个分数作为指数时,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函数来计算一个表达式时,比如“积分”,这个分数被转换成一个浮点数,而不是作为一个分数。我需要这个分数的原因是因为我正在进行手工集成,所以对这个分数的操作对于了解如何执行这个过程是很重要的。
如有任何帮助,将不胜感激。
发布于 2022-09-12 17:30:03
粗略地说,编写(x**3 - 7)^(3/7)时,Python将查看命令并执行除法3/7=0.428571428571。稍后,Python将看到符号对象x和SymPy将与其运算符“启动”,从而产生一个符号表达式。
在这些情况下,您有几种选择:
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)https://stackoverflow.com/questions/73692757
复制相似问题