我正在使用sympy并试图计算多项式的根数
from sympy.abc import x
from sympy import Poly
p = Poly(x**4+0.1,x)
此时,p是具有域“RR”的多项式:Poly(1.0*x**4 + 0.1, x, domain='RR')
如果我试图计算区间中的根数,我会得到:
p.count_roots(0,2)
TypeError: unsupported operand type(s) for *=: 'RealElement' and 'PythonRational'
但是,如果我定义
q = Poly(x**3-1, x)
ans: Poly(x**3 - 1, x, domain='ZZ')
q.count_roots(0,2)
ans: 1
类似地,如果我要求整个域上p
的根数,也可以
p.count_roots()
ans: 1
我应该怎么做才能提供正确的类型来计算根?你知道吗
在可能的情况下,在符号表达式中使用精确(而不是浮点)数字(这一原则适用于所有符号数学软件,而不仅仅是sympy)。你知道吗
在这种情况下,
p
定义中的常数项0.1
可以用(精确的)比率表示1/10
代替。Sympy使用Rational
来描述数字的比率(因为,python将输入1/10
解释为浮点除法并自动转换为0.1
)。你知道吗以下代码起作用。你知道吗
另请参阅
sympy.nsimplify
,以将任意浮点数(例如12.21525
)转换为(近似相等)有理数。你知道吗相关问题 更多 >
编程相关推荐