python求导数与微分

例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)


运行代码输出结果:


以上为多元函数偏导数的结果。

​    
 
​    

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值