例1:求f(x)=2x^3+3x^2-12x+7的导函数,并作出该函数图形和在x=−1处的切线。 解:编写Python代码如下: import matplotlib.pyplot as plt import numpy as np import sympy as sp # 导数与微分 x = sp.Symbol('x') f = 2 * x ** 3 + 3 * x ** 2 - 12 * x + 7 d = sp.diff(f) print('%s 的导函数为:%s' % (f, d)) y_d = d.evalf(subs={x: -1}) y_h = f.evalf(subs={x: -1}) print('将x=-1代入导函数求解为:%d' % (y_d)) print('将x=-1代入原函数求解为:%d' % (y_h)) f_d = y_d * (x + 1) + y_h print('得出切线方程为:%s' % f_d) # 绘制函数图和切线图 x = np.arange(-4, 3, 0.01) y1 = 2 * x ** 3 + 3 * x ** 2 - 12 * x + 7 y2 = 8 - 12 * x plt.title('函数y=2*x**3+3*x**2-12*x+7以及当x=-1时的切线') plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False plt.plot(x, y1, x, y2) plt.show()
运行代码输出结果和绘制图像:
最后执行便在同一个坐标系内作出了函数f ( x ) f(x)f(x)的图形和它在 x = − 1 x=-1x=−1 处的切线(直线为切线)
import sympy as sp x = sp.Symbol('x') y = x ** 10 + 2 * (x - 10) ** 9 for n in range(1, 12): y = d = sp.diff(y) print('第%2d阶导数为:%s' % (n, d))
运行代码输出结果:
输出即为题中要求所得函数高阶导数。
import sympy as sp x, y = sp.symbols('x y') z = 2 * x ** 2 - 2 * x * y + y ** 2 + x + 2 * y + 1 d = -sp.diff(z, x) / sp.diff(z, y) print('原方程导数为:%s' % d)
运行代码输出结果:
import sympy as sp t = sp.Symbol('t') x = sp.exp(t) * sp.cos(t) y = sp.exp(t) * sp.sin(t) d = sp.diff(y, t) / sp.diff(x, t) print('原参数方程导数结果为:%s' % d) d = sp.simplify(d) print('原参数方程导数化简为:%s' % d)
运行代码输出结果:
根据参数方程求导法则最后求得由参数方程确定函数的导数。
import sympy as sp x, y = sp.symbols('x y') z = sp.sin(x * y) + (sp.cos(x * y)) ** 2 d1 = sp.diff(z, x) d2 = sp.diff(z, y) d3 = sp.diff(z, x, 2) d4 = sp.diff(sp.diff(z, x), y) print('第一偏导数为:%s' % d1) print('第二偏导数为:%s' % d2) print('第三偏导数为:%s' % d3) print('第四偏导数为:%s' % d4)
运行代码输出结果:
以上为多元函数偏导数的结果。