TypeError: can't round symbolic expression
TypeError: can't round symbolic expression
我编写了一个函数,在传递参数时计算导数的值,但是当传递带有 abs() 的函数时,结果是符号而不是浮点数。但是,结果我需要四舍五入到小数点后两位,我不知道如何解决它
from sympy import *
import numpy as np
global x, y, z, t
x, y, z, t = symbols("x, y, z, t")
def req1(f, g, a):
dfg = diff(f + g, x)
res = round(dfg.subs(x, a), 2)
return res
round
是一个数字 Python 函数。它不了解 sympy 对象。
要获得常量 sympy 表达式的数值近似值,您可以使用 evalf()
:
from sympy import sqrt, symbols
x = symbols('x')
f = sqrt(x)
f.subs(x, 2) # sqrt(2)
f.subs(x, 2).evalf() # 1.41421356237310
一旦结果为数字,您可以使用 Python(或 numpy 的)数字函数:
round(f.subs(x, 2).evalf(), 2) # 1,41
Sympy 还有一个 round()
函数,它首先进行数值近似,然后进行舍入。 (Sympy的round不能单机调用,需要调用为expression.round()
.
f.subs(x, 2).round(2) # 1.41
我编写了一个函数,在传递参数时计算导数的值,但是当传递带有 abs() 的函数时,结果是符号而不是浮点数。但是,结果我需要四舍五入到小数点后两位,我不知道如何解决它
from sympy import *
import numpy as np
global x, y, z, t
x, y, z, t = symbols("x, y, z, t")
def req1(f, g, a):
dfg = diff(f + g, x)
res = round(dfg.subs(x, a), 2)
return res
round
是一个数字 Python 函数。它不了解 sympy 对象。
要获得常量 sympy 表达式的数值近似值,您可以使用 evalf()
:
from sympy import sqrt, symbols
x = symbols('x')
f = sqrt(x)
f.subs(x, 2) # sqrt(2)
f.subs(x, 2).evalf() # 1.41421356237310
一旦结果为数字,您可以使用 Python(或 numpy 的)数字函数:
round(f.subs(x, 2).evalf(), 2) # 1,41
Sympy 还有一个 round()
函数,它首先进行数值近似,然后进行舍入。 (Sympy的round不能单机调用,需要调用为expression.round()
.
f.subs(x, 2).round(2) # 1.41