【发布时间】:2015-02-20 19:12:51
【问题描述】:
我想使用 Sympy 的多项式,但我也想使用更高精度的系数。
Just Doing It 似乎给了我带有sympy.core.numbers.float 系数的多项式。
import sympy
from sympy import Poly
from sympy.abc import x
from gmpy2 import mpfr, get_context
get_context().precision = 150
#float64 can't tell this from 1.0
one_and_change = mpfr('1.0000000000000000000000000000000000001')
#mpfr('1.0000000000000000000000000000000000001000000005',150)
p = [one_and_change]
px = Poly(p, x)
print(px)
# Poly(1.0, x, domain='RR')
print(px.is_one)
# True
print(type(px.all_coeffs()[0]))
# <class 'sympy.core.numbers.Float'>
我也试过sympy.mpmath.mpf,结果相同。
这也不起作用:[1]
domain = sympy.polys.domains.realfield.RealField(150)
px = Poly(p, x, domain=domain)
print(type(px.all_coeffs()[0]))
# <class 'sympy.core.numbers.Float'>
【问题讨论】:
-
您可以将
domain='EX'与Float一起使用。 -
我不这么认为。
Float是 Python 大小的固定宽度 IEEE 浮点数,不是吗? -
不,Float 是 mpmath.mpf 的包装器,它是任意精度的。
-
好的,感谢寻找设置精度的方法。
标签: python python-3.x sympy polynomial-math gmpy