lambdify可以用dytpe返回数组吗np.float128?

2024-04-27 19:21:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在求解一个大型非线性方程组,我需要很高的数值精度。我目前正在使用sympy.lambdify将方程组及其雅可比矩阵的符号表达式转换为矢量化函数,这些函数以ndarray作为输入并返回ndarray作为输出。在

默认情况下,lambdify返回数据类型为numpy.float64的数组。是否可以让它返回一个dtype为numpy.float128的数组?也许这要求输入的数据类型是numpy.float128?在


Tags: 函数numpy表达式符号精度矩阵数组方程组
2条回答

输出只是反映了输入:

from numpy import float128
from sympy.abc import x
from sympy.utilities import lambdify

f = lambdify(x, x ** 2)
result = f(float128(2))

result
#>>> 4.0

type(result)
#>>> <class 'numpy.float128'>

如果需要很高的精度,可以尝试使用SymPy浮点,或者直接使用mpmath(它是SymPy的一部分),它提供任意精度。例如,sympy.Float('2.0', 100)创建一个精度为100位的2.0浮点。例如,您可以使用sympy.sin(2).evalf(100)来获得100位数的sin(2)。这将比numpy慢很多,因为它是任意精度的,这意味着它不使用机器浮点,而且它是用纯Python实现的(而numpy是用Fortran和C编写的)。在

相关问题 更多 >