编程语言
首页 > 编程语言> > 第二单元 用python学习微积分(十一)最值问题下和相关变率

第二单元 用python学习微积分(十一)最值问题下和相关变率

作者:互联网

本文内容来自于学习麻省理工学院公开课:单变量微积分-相关变率-网易公开课

一、最值问题举例

1、将一根长度为1的线,切成2段, 每一段圈成一个正方形,求所能得到的最大面积

f(x) =\frac{x^2}{16} + \frac{(1-x)^2}{16} = \frac{x^2 +1-2x+x^2}{16}| = \frac{x^2 -x+\frac{1}{2}}{8}_{x<1}

f'(x) =(\frac{x^2 -x+\frac{1}{2}}{8})' = \frac{1}{4}x - \frac{1}{8}

f'(x) = \frac{1}{4}x - \frac{1}{8}|_{x=\frac{1}{2}} =0 , f(\frac{1}{2}) = \frac{1}{32}

计算两端:

f(x)|_{x=1} = \frac{1}{16}, f(x)|_{x=0} = \frac{1}{16}

f'(x) = \frac{1}{4}x - \frac{1}{8}|_{x>\frac{1}{2}} >0, 驻点 所以满足条件时应该x越大函数取值越大, 当x->1时, 函数最大 f(x)|_{x\rightarrow1} = \frac{1}{16}f(x)|_{x\rightarrow1} = \frac{1}{16}

f'(x) = \frac{1}{4}x - \frac{1}{8}|_{x<\frac{1}{2}} <0, 驻点 所以满足条件时应该x越小函数取值越大, 当x->0时, 函数最大 f(x)|_{x\rightarrow0} = \frac{1}{16}

考虑两边高中间低这种驻点,所以驻点处得到最小面积值 1/32

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(10 ) 

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*x/16 + (1-x)*(1-x)/16
DrawXY(0,1,100,y,'green','x*x/16 + (1-x)*(1-x)/16',plt)
plt.plot([0,1],[1/16,1/16], color = 'gray', label= 'y=1/16')

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

 

2、找到固定容积的无顶盖的盒子,使其表面积的最小值, (提示:底部是正方形--- 由于有正方形周长最短)

V= x^2 y

此处y可以称约束, y = \frac{V}{x^2}

A = x^2+ 4xy(没有顶)

A = x^2 + 4x\frac{V}{x^2} = x^2 +4\frac{V}{x}

A' = 0

A' = 2x - \frac{4V}{x^2} .......2x - \frac{4V}{x^2} = 0......x^3 = 2V ......x = 2^{\frac{1}{3}} V^{\frac{1}{3}}(驻点)

端点 0<x<\infty

A(0^+) = \infty

A(\infty) = \infty

因为驻点为 x = 2^{\frac{1}{3}} V^{\frac{1}{3}} ,所以图应该是

考虑二阶导数

A'' = 4+\frac{8V}{x^3} (由x>0, 式子恒正,因此图形应该是上凹, 而驻点应该是最小点)

最优解为: y = \frac{V}{(2^{\frac{1}{3}}V^{\frac{1}{3}})^2} = 2^{-\frac{2}{3}}V^{\frac{1}{3}} ;A = x^2 +4\frac{V}{x} = (2^{\frac{1}{3}} V^{\frac{1}{3}})^2 + 4(\frac{V}{2^{\frac{1}{3}} V^{\frac{1}{3}}}) =2^{\frac{2}{3}}V^{\frac{2}{3}} + 2\times2^{\frac{2}{3}}V^{\frac{2}{3}} = 3\times2^{\frac{2}{3}}V^{\frac{2}{3}}(我算的答案和视频中不同....)

无量纲的解,这些比值才有意义,单位需要统一:

\frac{A}{V^{\frac{2}{3}}} =3\times 2^{\frac{2}{3}}(我算的答案和视频中不同....)

\frac{x}{y} = \frac{2^{\frac{1}{3}} V^{\frac{1}{3}}}{2^{-\frac{2}{3}}V^{\frac{1}{3}}} = 2 , 所以做盒子的最优解是,底边和高的比为2

3、隐函数求导法

V = x^2y , V是固定值

A = x^2+ 4xy(没有顶), 要求最小值

因为y是x的函数,

\frac{d}{dx}(V = x^2y)

\frac{d}{dx}(0 = 2xy+x^2y')

y' =-\frac{2xy}{x^2} = -\frac{2y}{x}

\frac{dA}{dx}=2x+ 4y + 4xy' = 2x+ 4y + 4x(-\frac{2y}{x}) = 2x-4y = 0

\frac{x}{y} = 2

很快得到了解,但是无法检查这个解是最大值、最小值还是驻点 ...

就本题来说,只能用方法一来计算边界,但是老师说现实生活中,很多公式会很容易看到边界等等,因此很容易分辨这个解是否是所需要的.........

二、相关变率

1、有个警察,离道路30英尺。您开车过来。警察有个雷达,正在测速。雷达显示距离您50英尺,并且您的车沿雷达方向以每秒80英尺的速度逼近。超速每秒95英尺, 每小时65英里, 问题是您超速了没?

注意:这里汽车前行到图上直线垂足处是变化的,所以距离为x, 同时汽车和警察的距离也是变化的设为D,时间变化设为t, 这里主要就是求 \frac{dx}{dt}

标签:plt,python,微积分,color,set,ax,x1,驻点,最值
来源: https://blog.csdn.net/bullseye/article/details/122397190