sympy lamdify 大量问题

sympy lamdify issue with large numbers

我在使用 sympy.lambdify 时遇到一些问题。我有一个相当简单的符号表达式,仅涉及平方根、正弦和余弦以及一些大数(由此处未显示的程序的其他部分生成)。 Lambdify 确实适用于单个浮点数,但不适用于 numpy 数组。不过这些对后面的作图还是很有帮助的。

我得到的错误是

AttributeError: 'float' object has no attribute 'sqrt'

这是一个mwe。请注意,expr1 工作得很好,而 expr2 则不行。非常感谢任何解决问题的帮助。

import sympy
import numpy

x = sympy.symbols('x', real=True)

expr1 = -sympy.sqrt(4*sympy.sin(3*x/4)**2 - 2*sympy.cos(3*x/83) + 5*sympy.cos(2*x/3)**2 + 2)
expr2 = -sympy.sqrt(2.14881349445107e+30*sympy.sin(209178661335919*x/10000000000000)**2 + 13456000000000000000000000000*sympy.cos(209178661335919*x/10000000000000)**2 - 1.40793126300373e+29*sympy.cos(209178661335919*x/10000000000000) + 4.73607234789273e+30)

func1 = sympy.lambdify(x, expr1, modules='numpy')
func2 = sympy.lambdify(x, expr2, modules='numpy')

array = numpy.arange(2)
print(func1(array))
print(func2(array[0]))
print(func2(array[1]))  #works fine until here
print(func2(array))     #fails

python 3.7.3
麻木 1.16.3
同情 1.14

编辑:
我不能直接修改expr2。它只是以这种形式出现在这里以提供一个 mwe。然而,在实际代码中,它是作为矩阵的特征值生成的,需要相当长的时间来计算。

eigenvalues = Matrix.eigenvals()
expr2 = list(eigenvalues.keys())[0]

尝试将 nfloat 应用于表达式,然后再将其传递给 lambdifyexpr2 = sympy.nfloat(expr1)