在 sympy 中,您可以通过diff()
. .subs(x, 5)
填写 的5
值x
。一个例子:
from sympy.abc import x
f = x**2
print(f.diff(x).subs(x,5))
这是计算给定函数在给定值下的导数的函数的样子。evalf()
可用于消除符号部分(例如给出数字近似值2*pi
或Sqrt(5)
sympy 标准希望保持其精确符号形式)。
def derive_and_evaluate(x, f, xval):
return f.diff(x).subs(x, xval).evalf()
derive_and_evaluate(x, x**2, 5)
如果您需要许多 x 值的相同导数,您可以执行以下操作:
from sympy import lambdify
g = lambdify(x, f.diff(x)) # now `g` is a numpy function with one parameter
或者,如果您想要一个执行推导并转换为 numpy 形式的函数:
def derive_and_lambdify(x, f):
return lambdify(x, f.diff(x))
g = derive_and_lambdify(x, x**2)
print(g(5))
从那时起,您可以使用g
类似于其他 numpy 的功能。这是一个更详细的示例:
from sympy import lambdify, sin
from sympy.abc import x
f = sin(1 / (1 + x ** 2))
g = lambdify(x, f.diff(x))
import numpy as np
from matplotlib import pyplot as plt
xs = np.linspace(-5, 5, 100)
ys = g(xs)
plt.plot(xs, ys)
plt.show()