我在使用Python中的sympy.solvers
解决多项式问题时遇到了一些小问题。我想找到有理根而不是无理根。我的尝试如下所示 -
from sympy.solvers import solve
from sympy import Symbol
from fractions import Fraction
b_2=0
b_4= -10
b_6=32
b_8=-25
x_2p=-7/4
x = Symbol('x', real=True)
solution=solve(((4*x**3+b_2*x**2+2*b_4*x+b_6)*x_2p-(x**4-b_4*x**2-2*b_6*x-b_8)), x)
R=solution
if len(R) != 0:
print(Fraction(R[1]))
我收到以下错误 -
Traceback (most recent call last):
File "C:\Users\Roy\Desktop\EXP_2704 - Copy.py", line 16, in <module>
print(Fraction(R[1]))
File "C:\Program Files\Python37\lib\fractions.py", line 161, in __new__
raise TypeError("argument should be a string "
TypeError: argument should be a string or a Rational instance
请注意,我需要从浮点数中获取准确的分数。 如何找到有理根?
-7/4
时,你已经放弃了得到一个精确答案的希望,因为它产生了一个浮点数。这是一个浮点数,恰好是该值的精确表示,但sympy无法知道这一点 - 因此它放弃尝试给出一个精确的符号结果,并计算浮点数。(而且基本上不可能确定一个浮点数是否应该表示有理数或无理数的值。) - jasonharperx_2p=-7/4
,而是在print(Fraction(R[1]))
。 - Michael