如何使用 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' 对象到底是什么?

三种方法:

  1. 最快(在写代码方面,但在计算速度方面最慢),但不太可靠,使用subs方法:
dx_f.subs(x, 2)
  1. 使用evalf方法:
dx_f.evalf(subs={x: 2.0})
  1. 使用lambdify:如果您需要使用 Numpy 数组计算函数,这是首选:
f = lambdify([x], dx_f)
f(2.0)

关于数字类型的注释 return 通过每种方法编辑:

  • subs 可能 return 类型 IntegerFloatRational 的数字(这些是数字的 SymPy 类型),具体取决于表达式和要替换的值。
  • evalf 总是 returns 类型 Float.
  • 的数字
  • lambdify(如上例所示)returns Python 的数字 intfloat,具体取决于表达式和要替换的值。