第二单元 用python学习微积分(十)曲线构图下和最值问题

本文内容来自于学习麻省理工学院公开课:单变量微积分-最值问题-网易公开课

开发环境准备:CSDN

目录

一、曲线构图例子

二、曲线构图总结:

1、描点

a 找到函数的不连续点(尤其是函数值趋向于无穷的点)

b 找到无限远端的点即x趋向于无穷( ​ )的点

c 标出那些容易找到的点,比如在坐标轴上的....(optional)

2、计算

a 求导f'(x) = 0

b 求驻点和驻点的值

3、根据导数检查

4、根据2次导数检查(由于求二阶导数经常非常复杂,所以没有要求尽量避免这一步)

5、综合以上

三、例子

1、描点

a ​

b 远端点

2、计算

3、根据导数检查

4、根据2次导数检查

四、最值问题


一、曲线构图例子

f(x) = \frac{x+1}{x+2}

f'(x) = (\frac{x+2-1}{x+2})' = (1-\frac{1}{x+2})' =- \frac{1}{(x+2)^2}\ne0(看出原函数双曲线函数)

因为导数永不为0, 所以这个函数没有驻点

画这个函数的简图,首先考虑非法点x=-2

x=-2^+f(x) = \frac{-1}{-2^+ + 2} = \frac{-1}{0^+} = -\infty

x=-2^-f(x) = \frac{-1}{-2-+ + 2} = \frac{-1}{0^-} = \infty

可以想象这个会是

这时考虑当x取\pm\inftyf(x) = \frac{x+1}{x+2} = \frac{1+\frac{1}{x}}{1 + \frac{2}{x}}_{x\rightarrow \pm\infty} = 1,同时由于f'(x) 永不为0,因此没有驻点,所以不会出现翻转(没有turning point, 函数中没有一个点有一根平的切线)(非法点也已经考虑清楚了)。

检查:这双曲线在下-infinity<x<-2 -2<x<infinity 随x增长y增长, 因为导数恒正

from sympy import *
import numpy as np 

import matplotlib.pyplot as plt 

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('zero')
ax.spines['bottom'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.set_aspect( 1 ) 

def DrawXY(xFrom,xTo,steps,expr,color,label,plt):
    yarr = []
    xarr = np.linspace(xFrom ,xTo, steps) 
    for xval in xarr:
        yval = expr.subs(x,xval)
        yarr.append(yval)
    y_nparr = np.array(yarr) 
    plt.plot(xarr, y_nparr, c=color, label=label)    

def TangentLine(exprY,x0Val,xVal):
    diffExpr = diff(exprY)
    x1,y1,xo,yo = symbols('x1 y1 xo yo')
    expr = (y1-yo)/(x1-xo) - diffExpr.subs(x,x0Val)
    eq = expr.subs(xo,x0Val).subs(x1,xVal).subs(yo,exprY.subs(x,x0Val))
    eq1 = Eq(eq,0)
    solveY = solve(eq1)
    return xVal,solveY

def DrawTangentLine(exprY, x0Val,xVal1, xVal2, clr, txt):
    x1,y1 = TangentLine(exprY, x0Val, xVal1)
    x2,y2 = TangentLine(exprY, x0Val, xVal2)
    if len(txt)>0:
        plt.plot([x1,x2],[y1,y2], color = clr, label=txt)
    else:
        plt.plot([x1,x2],[y1,y2], color = clr)
        
x= symbols('x')
y = (x+1)/(x+2)
DrawXY(-10,-2.1,100,y,'green','(x+1)/(x+2)',plt)
DrawXY(-1.9,8,100,y,'green','(x+1)/(x+2)',plt)

plt.plot([-12,10],[1,1], color = 'gray', label= 'y=1')

plt.legend(loc='upper right')
plt.show() 

f''(x) = -\frac{2}{(x+2)^3} (x\ne-2)

f''(x) >0 |_{ -\infty<x<-2} 上凹函数

f''(x) <0 |_{ -2<x<\infty} 下凹函数

这两个二阶导数的结果告诉我们这个原函数的图像不是波浪形

二、曲线构图总结:

1、描点

a 找到函数的不连续点(尤其是函数值趋向于无穷的点)

b 找到无限远端的点即x趋向于无穷( \pm\infty )的点

c 标出那些容易找到的点,比如在坐标轴上的....(optional)

2、计算

a 求导f'(x) = 0

b 求驻点和驻点的值

3、根据导数检查

在每个以驻点或不连续点为端点的区间根据f'(x)检查是否递增或递减

4、根据2次导数检查(由于求二阶导数经常非常复杂,所以没有要求尽量避免这一步)

在每个以驻点或不连续点为端点的区间根据f''(x) >或< 0, 检查是否符合上凹(concave up)或下凹(concave down)

f''(x) = 0 求出拐点( inflection point )

5、综合以上

三、例子

f(x) = \frac{x}{ln(x)} (x>0 , 对数的定义域没有负)

x\rightarrow1, f(x)\rightarrow\infty

1、描点

a f(1^+) = \frac{1}{ln1^+} = \frac{1}{0^+} = \infty

f(1^-) =- \infty

b 远端点

f(0^+) = \frac{0^+}{ln0^+} = \frac{0^+}{\infty} = 0

f(10^{10}) = \frac{10^{10}}{ln10^{10}} = \frac{10^{10}}{10ln10} (2<ln10 <3) 因此 f(\infty) = \infty

2、计算

f'(x) = \frac{x'ln(x) - ln(x)'x}{(ln(x))^2} = \frac{ln(x)-1}{ln(x)^2}|_{x=e} = 0

f(e) = \frac{e}{lne} = e

驻点为:(e,e)

x= symbols('x')
y = x/ln(x)
DrawXY(0,0.9,100,y,'r','',plt)
DrawXY(1.1,10,100,y,'r','',plt)
plt.plot([np.e,np.e],[-10,12.5], color = 'gray', label= 'x=e')
plt.plot([1,1],[-10,12.5], color = 'g', label= 'x=1')

3、根据导数检查

f'(x) = \frac{x'ln(x) - ln(x)'x}{(ln(x))^2} = \frac{ln(x)-1}{ln(x)^2}

0<x<1时 ln(x) < 0 , ln(x)*ln(x) > 0 因此此时f'(x) < 0,f(x) 递减

1<x<e时 0<ln(x) < 1 , ln(x)*ln(x) > 0 因此此时f'(x) < 0,f(x) 递减

e=x 时 ln(x) -1 = 0 , 驻点

x>e 时ln(x) - 1 > 0 , ln(x)*ln(x) > 0 因此此时f'(x) > 0,f(x) 递增

符合图像

4、根据2次导数检查

f'(x) = \frac{ln(x)-1}{ln(x)^2}

f''(x) = (\frac{1}{ln(x)} - \frac{1}{ln^2(x)} )' = -\frac{1}{ln^2(x)}\frac{1}{x} + 2\frac{1}{ln^3(x)}\frac{1}{x} = \frac{2-ln(x) }{ln^3(x)x} (从这能看出其实x=0点处的f'(x) = 0)

f''(x)|_{x=e} = 0

f''(x)|_{0<x<1} < 0 .....( 2-ln(x) > 0, xln^3(x)<0) 下凹

f''(x)|_{ 2<x<e^2} >0 ...... ( 2-ln(x) > 0, xln^3(x)>0) 上凹

f''(x)|_{x>e^2} <0 ...... ( 2-ln(x) < 0, xln^3(x)>0) 下凹

这里发现了问题, 没有考虑这么远的点x=e*e这个拐点, 在e*e点出发生了图形的变化

四、最值问题

从函数图形上很容易找到最大值和最小值,但是画图需要很大的计算量,希望找到捷径去解决这个问题

找到最值得关键点是找到驻点(critical point)同时观察不连续点

这个函数就有5个极值点(extreme point), 但这个驻点是找最值不关心的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bullseye

您的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值