本博文源于高等数学基础,旨在用python对函数进行驻点和极大值与极小值求取,最后采用画图进行展示。最后一个例子就是求凹凸区间与拐点。
例题1:求函数 y = 2 x 3 − 6 x 2 − 18 x + 7 y=2x^3-6x^2-18x+7 y=2x3−6x2−18x+7的极值,并作图对照
1.1思路解析
先观察其定义域,然后发现定义域属于R,然后进行求导,驻点就是导数为0点,然后根据二阶导数判断它是极大值还是极小值就行了。
1.2 实验效果
1.3 实验代码
from sympy import *
x = symbols('x')
y = 2*x**3-6*x**2-18*x+7
ds_1 = diff(y,x)
ans = solve(ds_1,x)
print('函数的导数为',ds_1)
print('驻点为',ans)
ds_2 = diff(y,x,2)
ans_1 = ds_2.evalf(subs={x:-1})
ans_2 = ds_2.evalf(subs={x:3})
print('二阶导数在x=-1的值为',ans_1)
print('二阶导数在x=3的值为',ans_2)
# 求极大值与极小值
ans_3 = y.evalf(subs={x:-1})
ans_4 = y.evalf(subs={x:3})
print('函数的极大值为',ans_3)
print('函数的极小值为',ans_4)
# 对照图像
import matplotlib.pyplot as plt
from numpy import *
x = arange(-4,4,0.01)
y = 2*x**3-6*x**2-18*x+7
plt.figure()
plt.plot(x,y)
plt.grid(True)
plt.show()
例题2:求 y = x 4 − 2 x 3 + 1 y=x^4-2x^3+1 y=x4−2x3+1的凹凸区间与拐点
2.1 思路解析
判断凹凸区间的时候,一定要加上二阶导数,二阶导数diff函数,就行了,拐点是二阶导数为0的点。
2.2 实验效果
2.3 实验代码
from sympy import *
x = symbols('x')
y = x**4-2*x**3+1
ds_1 = diff(y,x)
ds_2 = diff(y,x,2)
ans = solve(ds_2,x)
print('函数的导数为',ds_1)
print('函数的二阶导数为',ds_2)
print('二阶导数为0的点是',ans)
# 确定二阶导数在两个根左右附近的符号
ans_1 = ds_2.evalf(subs={x:-1})
ans_2 = ds_2.evalf(subs={x:1/2})
ans_3 = ds_2.evalf(subs={x:2})
print('二阶导数在x=-1的值为',ans_1)
print('二阶导数在x=1/2的值为',ans_2)
print('二阶导数在x=2的值为',ans_3)
# 结合图像确定凹凸区间
import matplotlib.pyplot as plt
from numpy import *
x = arange(-1,2,0.01)
y = x**4-2*x**3+1
plt.figure()
plt.plot(x,y)
plt.grid(True)
plt.show()
总结
通过本次学习,简单运用python对函数进行极值,与凹凸区间与拐点进行求值。结构清晰。