如何使用 SymPy 计算 Python 中某一点的导数值?
How to evaluate the value of derivative at a point in Python using SymPy?
我正在学习 SymPy,这是在 Python 中进行复杂数学运算的有用工具。我写了下面的代码来计算一个函数的导数:
x = sympy.symbols('x')
f = x**2
dx_f = diff(f)
print(dx_f)
这正确地给出了输出:
2*x
但是,如果我尝试计算某个点的导数:
print dx_f(2.0)
内核引发以下错误:
TypeError: 'Mul' object is not callable
如何解决此错误以及 'Mul' 对象到底是什么?
三种方法:
- 最快(在写代码方面,但在计算速度方面最慢),但不太可靠,使用
subs
方法:
dx_f.subs(x, 2)
- 使用
evalf
方法:
dx_f.evalf(subs={x: 2.0})
- 使用
lambdify
:如果您需要使用 Numpy 数组计算函数,这是首选:
f = lambdify([x], dx_f)
f(2.0)
关于数字类型的注释 return 通过每种方法编辑:
subs
可能 return 类型 Integer
、Float
、Rational
的数字(这些是数字的 SymPy 类型),具体取决于表达式和要替换的值。
evalf
总是 returns 类型 Float
. 的数字
lambdify
(如上例所示)returns Python 的数字 int
或 float
,具体取决于表达式和要替换的值。
我正在学习 SymPy,这是在 Python 中进行复杂数学运算的有用工具。我写了下面的代码来计算一个函数的导数:
x = sympy.symbols('x')
f = x**2
dx_f = diff(f)
print(dx_f)
这正确地给出了输出:
2*x
但是,如果我尝试计算某个点的导数:
print dx_f(2.0)
内核引发以下错误:
TypeError: 'Mul' object is not callable
如何解决此错误以及 'Mul' 对象到底是什么?
三种方法:
- 最快(在写代码方面,但在计算速度方面最慢),但不太可靠,使用
subs
方法:
dx_f.subs(x, 2)
- 使用
evalf
方法:
dx_f.evalf(subs={x: 2.0})
- 使用
lambdify
:如果您需要使用 Numpy 数组计算函数,这是首选:
f = lambdify([x], dx_f)
f(2.0)
关于数字类型的注释 return 通过每种方法编辑:
subs
可能 return 类型Integer
、Float
、Rational
的数字(这些是数字的 SymPy 类型),具体取决于表达式和要替换的值。evalf
总是 returns 类型Float
. 的数字
lambdify
(如上例所示)returns Python 的数字int
或float
,具体取决于表达式和要替换的值。