高等数学基础(连续性和导数)

函数建立了变量之间的关系, 有时候也需要考虑函数的连续性. 例如观察温度的变化, 当时间变动微小时, 气温的变化也很微小, 这种特点就是连续性

函数的连续性

设函数 f ( x ) f(x) f(x)在点 x 0 x_0 x0的某个领域内有定义, 当自变量的增量 Δ x \Delta x Δx趋于 0 0 0时, 对应的函数的增量 Δ y = f ( x 0 + Δ x ) − f ( x 0 ) \Delta y=f(x_0 + \Delta x)-f(x_0) Δy=f(x0+Δx)f(x0), 即
lim ⁡ Δ x → 0 Δ y = lim ⁡ Δ X → 0 [ f ( x 0 + Δ x ) + f ( x 0 ) ) ] = 0 \lim_{\Delta x \rightarrow 0} \Delta y = \lim_{\Delta X \rightarrow 0}[f(x_0 + \Delta x) + f(x_0))] = 0 Δx0limΔy=ΔX0lim[f(x0+Δx)+f(x0))]=0
称函数 f ( x ) f(x) f(x) x 0 x_0 x0处连续

import numpy as np
import matplotlib.pyplot as plt

# 设置中文字体
plt.rcParams['font.sans-serif']=['Hiragino Sans GB'] # 修改字体
plt.rcParams['axes.unicode_minus'] = False # 正常显示负号


x = np.linspace(0, 10, 400)

y = x ** 2


# Delta X
y1 = np.linspace(0, y[200], 100)
x1 = len(y1) * [x[200]]


# Delta X 夹角
x3 = x[200:350]
y3 = len(x[200:350]) * [y[200]]

# Delta Y
y2 = np.linspace(0, y[350], 100)
x2 = len(y1) * [x[350]]

plt.figure(figsize=(6, 6))

plt.plot(x, y, label="$y=f(x)=x^2$")
# 绘制 Delta x 线条, 和文本展示
plt.plot(x1, y1, color='gray', linestyle='--')
plt.plot(x3, y3, color='gray', linestyle='--')
plt.text(x3[70], y3[70] - 3, '$\Delta x$')
plt.text(x1[50] - 0.1, -3, '$x_0$')

# 绘制 Delta y 线条
plt.plot(x2, y2, color='gray', linestyle='--')
plt.text(x2[50] + 0.1, y2[50], '$\Delta y$')
plt.text(x2[50] - 0.1, -3, '$x_0 + \Delta x$')
plt.title("函数的连续性")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.grid()
plt.show()

在这里插入图片描述

函数连续性需要满足的条件

函数 f ( x ) f(x) f(x)在点 x 0 x_0 x0处连续, 需要满足以下的条件

  1. 函数在该点处有定义
  2. 函数在该点处极限 lim ⁡ x → x 0 f ( x ) \lim_{x \rightarrow x_0}f(x) limxx0f(x)存在
  3. 极限值等于函数值 f ( x 0 ) f(x_0) f(x0)

已知函数 f ( x ) = { x + 1 , x ≤ 0 s i n x x , x > 0 f(x)= \begin{cases} x + 1, x \le 0 \\ \frac{sinx}{x}, x \gt 0 \end{cases} f(x)={x+1,x0xsinx,x>0, 判断 f ( x ) f(x) f(x) x = − x=- x=处的连续性
解:
f ( 0 ) = 1 f(0)=1 f(0)=1, lim ⁡ x → 0 − ( x + 1 ) = 1 \lim_{x \rightarrow 0^-}(x+1)=1 limx0(x+1)=1, lim ⁡ x → 0 + s i n x x = 1 \lim_{x \rightarrow 0^+}\frac{sinx}{x}=1 limx0+xsinx=1, 极限存在并且等于 f ( 0 ) f(0) f(0)
满足上述三个条件, 因此函数 f ( x ) f(x) f(x) x = 0 x=0 x=0处连续

import numpy as np
import matplotlib.pyplot as plt

# 设置中文字体
plt.rcParams['font.sans-serif']=['Hiragino Sans GB'] # 修改字体
plt.rcParams['axes.unicode_minus'] = False # 正常显示负号

x = np.linspace(0, 10, 400)
y = np.piecewise(x, [x <= 0, x > 0], [lambda t: t + 1, lambda t: np.sin(t) / t])
plt.figure(figsize=(6, 6))
plt.plot(x, y)
plt.title("函数是否连续")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.grid()
plt.show()

在这里插入图片描述

函数的间断点

设函数 f ( x ) f(x) f(x)在点 x 0 x_0 x0的某个去心邻域内有定义, 如果函数 f ( x ) f(x) f(x)有下列3种情况之一, 那么函数 f ( x ) f(x) f(x)在点 x 0 x_0 x0处不连续, 点 x 0 x_0 x0称为函数 f ( x ) f(x) f(x)的间断点或者不连续点

  1. 函数 f ( x ) f(x) f(x)在点 x = x 0 x=x_0 x=x0处没有定义
  2. 函数 f ( x ) f(x) f(x)虽然在点 x = x 0 x=x_0 x=x0处有定义, 但是在该点处的极限 lim ⁡ x → x 0 f ( x ) \lim_{x \rightarrow x_0}f(x) limxx0f(x)不存在
  3. 函数 f ( x ) f(x) f(x)虽然x_0在点 x = x 0 x=x_0 x=x0处有定义, 且该点处的极限 lim ⁡ x → x 0 f ( x ) \lim_{x \rightarrow x_0}f(x) limxx0f(x)存在, 但 lim ⁡ x → x f ( x ) ≠ f ( x 0 ) \lim_{x \rightarrow x}f(x) \ne f(x_0) limxxf(x)=f(x0)
间断点的常见类型
  1. 跳跃间断点, l i m x → x 0 + f ( x ) lim_{x \rightarrow x_0^+}f(x) limxx0+f(x), l i m x → x 0 − f ( x ) lim_{x \rightarrow x_0^-}f(x) limxx0f(x)极限都存在, 但是 l i m x → x 0 + f ( x ) ≠ l i m x → x 0 − f ( x ) lim_{x \rightarrow x_0^+}f(x) \ne lim_{x \rightarrow x_0^-}f(x) limxx0+f(x)=limxx0f(x)
    比如:
    f ( x ) = { − 1 , x < 0 0 , x = 0 1 , x > 0 , 0 为跳跃间断点 f(x) = \begin{cases} -1, x \lt 0 \\ 0, x = 0 \\ 1, x \gt 0 \end{cases}, 0 为跳跃间断点 f(x)= 1,x<00,x=01,x>0,0为跳跃间断点
  2. 可去间断点, l i m x → x 0 f ( x ) lim_{x \rightarrow x_0}f(x) limxx0f(x)极限存在且相等, 但是 l i m x → x 0 + f ( x ) ≠ l i m x → x 0 − f ( x ) lim_{x \rightarrow x_0^+}f(x) \ne lim_{x \rightarrow x_0^-}f(x) limxx0+f(x)=limxx0f(x) f ( x ) f(x) f(x)在该点无定义
    f ( x ) = x 2 − 1 x 2 − 3 x + 2 , ( 1 , 2 ) 为跳跃间断点 f(x) = \frac{x^2 - 1}{x^2 - 3x + 2}, (1, 2)为跳跃间断点 f(x)=x23x+2x21,(1,2)为跳跃间断点

导数

如果我们知道平均速度 v = s t v=\frac{s}{t} v=ts, 那么如何来表示瞬时速度呢?
瞬时经过的路程: Δ s = s ( t 0 + Δ t ) − s ( t 0 ) \Delta s= s(t_0 + \Delta t) - s(t_0) Δs=s(t0+Δt)s(t0)
那么这一小段的 Δ t \Delta t Δt的平均速度: v ˉ = Δ s Δ t = s ( t 0 + Δ t ) − s ( t 0 ) Δ t \bar{v} = \frac{\Delta s}{\Delta t} = \frac{s(t_0 + \Delta t) - s(t_0)}{\Delta t} vˉ=ΔtΔs=Δts(t0+Δt)s(t0)
Δ → 0 \Delta \rightarrow 0 Δ0, 对应的 v ˉ \bar{v} vˉ就是瞬时速度, 此刻 t 0 t_0 t0的瞬时速度 v = lim ⁡ Δ t → 0 = lim ⁡ Δ t → 0 s ( t 0 + Δ t ) − s ( t 0 ) Δ t v=\lim_{\Delta t \rightarrow 0}=\lim_{\Delta t \rightarrow 0} \frac{s(t_0 + \Delta t) - s(t_0)}{\Delta t} v=limΔt0=limΔt0Δts(t0+Δt)s(t0)
瞬时速度就是变化率的问题

定义

f ( x ) f(x) f(x) x 0 x_0 x0的某个邻域内有意义, 当 x x x的增量为 Δ x \Delta x Δx, y y y的增量为 Δ y \Delta y Δy f ( x 0 + Δ x ) − f ( x 0 ) f(x_0 + \Delta x) - f(x_0) f(x0+Δx)f(x0)
Δ x → 0 \Delta x \rightarrow 0 Δx0时, Δ y Δ x \frac{\Delta y}{\Delta x} ΔxΔy的极限存在, 则称函数 f ( x ) f(x) f(x) x 0 x_0 x0处可导. 此极限值为函数 f ( x ) f(x) f(x)在点 x 0 x_0 x0的导数, 记做 f ′ ( x 0 ) f'(x_0) f(x0)
即: f ′ ( x ) = lim ⁡ x → 0 Δ y Δ x = lim ⁡ x → 0 f ( x 0 + Δ x ) − f ( x 0 ) Δ x f'(x) = \lim_{x \rightarrow 0} \frac{\Delta y}{\Delta x} = \lim_{x \rightarrow 0} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x} f(x)=limx0ΔxΔy=limx0Δxf(x0+Δx)f(x0)
变换形式: y ′ ∣ x = x 0 y'|_{x=x_0} yx=x0, d y d x ∣ x = x 0 \frac{dy}{dx}|_{x=x_0} dxdyx=x0, d f ( x ) d x ∣ x = x 0 \frac{df(x)}{dx}|_{x=x_0} dxdf(x)x=x0

几何意义

通常函数 y = f ( x ) y=f(x) y=f(x)的导数表示了因为自变量 y y y在点 x 0 x_0 x0处变化量 x x x变化的快慢程度, 从几何意义上, 函数在某一点 x 0 x_0 x0的变化率等于这一点的切线的斜率

P 0 P_0 P0的导数为在点 P 0 P_0 P0处所做切线的斜率, 即 f ′ ( x 0 ) = t a n α f'(x_0)=tan \alpha f(x0)=tanα, 其中 α \alpha α是切线的倾角

import numpy as np
import matplotlib.pyplot as plt
import sympy as sp

# 设置中文字体
plt.rcParams['font.sans-serif']=['Hiragino Sans GB'] # 修改字体
plt.rcParams['axes.unicode_minus'] = False # 正常显示负号


def get_tangent_line(x, f, a):
    """获取切线方程
    公式为: y - f(a) = f'(a)(x - a)
    :param x: 原始x的值
    :param f: 原始函数
    :a: 从那个点进行切, 获取这个点的切线方程
    """
    df = sp.diff(f, x)
    f_val = f.subs(x, a)
    df_val = df.subs(x, a)
    # y - f_val = df_val(x - 1)
    # y = df_val(x - 1) + f_val
    return df_val * (x - a) + f_val


def get_func_args(func):
    """原函数"""
    x = sp.Symbol("x")
    return x, func(x)


x_vals = np.linspace(0, 10, 400)
# 定义原函数
f_x = lambda t: t ** 2

# 获取sympy类型原函数
x, f_x = get_func_args(f_x)
np_f_x = sp.lambdify(x, f_x, 'numpy')
y_vals = np_f_x(x_vals)

# 获取点 4 位置 的切线方程
a = 4
tangent_line = get_tangent_line(x, f_x, a=a)
print(f"点 x={a} 处的切线方程: ", tangent_line)
# 通过导函数获取新的函数然后计算新的 numpy 的切线方程
tangent_f_x = sp.lambdify(x, tangent_line, "numpy")
tangent_y_vals = tangent_f_x(x_vals)



# Delta X
y_vals1 = np.linspace(0, y_vals[200], 100)
x_vals1 = len(y_vals1) * [x_vals[200]]


# Delta X 夹角
x_vals3 = x_vals[200:350]
y_vals3 = len(x_vals[200:350]) * [y_vals[200]]

# Delta Y
y_vals2 = np.linspace(0, y_vals[350], 100)
x_vals2 = len(y_vals1) * [x_vals[350]]

plt.figure(figsize=(6, 6))

# 打印原函数
plt.plot(x_vals, y_vals, label="原函数: $f(x)=x^2$")
# 打印切线函数
plt.plot(x_vals, tangent_y_vals, label=f"切线方程: $f(x)={tangent_line}$", linestyle='--')

# 绘制 Delta x 线条, 和文本展示
plt.plot(x_vals1, y_vals1, color='gray', linestyle='--')
plt.plot(x_vals3, y_vals3, color='gray', linestyle='--')

plt.text(x_vals3[70], y_vals3[70] - 3, '$\Delta x$')
plt.text(x_vals1[50] - 0.1, -3, '$x_0$')

# 绘制 Delta y 线条
plt.plot(x_vals2, y_vals2, color='gray', linestyle='--')
plt.text(x_vals2[50] + 0.1, y_vals2[50], '$\Delta y$')
plt.text(x_vals2[50] - 0.1, -3, '$x_0 + \Delta x$')
plt.title("函数的连续性")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.grid()
plt.show()

在这里插入图片描述

求导法则

如果函数 u = u ( x ) u=u(x) u=u(x), v = v ( x ) v=v(x) v=v(x)都在点 x x x有导数, 那么他们的和, 差, 积, 商(除分母为0的点外), 都在点 x x x具有导数, 且满足以下法则

  1. [ u ( x ) ± v ( x ) ] ′ = u ′ ( x ) ± v ′ ( x ) [u(x) \pm v(x)]' = u'(x) \pm v'(x) [u(x)±v(x)]=u(x)±v(x)
  2. [ u ( x ) ∗ v ( x ) ] ′ = u ′ ( x ) ∗ v ( x ) + u ( x ) ∗ v ′ ( x ) [u(x) * v(x)]' = u'(x) * v(x) + u(x) * v'(x) [u(x)v(x)]=u(x)v(x)+u(x)v(x)
    v ( x ) = C v(x)=C v(x)=C, C C C是常量时, ( C u ) ′ = C u ′ (Cu)'=Cu' (Cu)=Cu
  3. [ u ( x ) v ( x ) ] ′ = u ′ ( x ) ∗ v ( x ) − u ( x ) ∗ v ′ ( x ) v 2 ( x ) , v ( x ) ≠ 0 [\frac{u(x)}{v(x)}]' = \frac{u'(x)*v(x) - u(x) * v'(x)}{v^2(x)}, v(x) \ne 0 [v(x)u(x)]=v2(x)u(x)v(x)u(x)v(x),v(x)=0
    v ( x ) = C v(x)=C v(x)=C, C C C是常量时, ( C V ) ′ = − C v ′ v 2 (\frac{C}{V})'=\frac{-Cv'}{v^2} (VC)=v2Cv
反函数求导

设函数 x = f ( y ) x = f(y) x=f(y)在区间 D y D_y Dy内单调可导, 且 f ′ ( y ) ≠ x f'(y) \ne x f(y)=x, 那么它的反函数 y = f − 1 ( x ) y=f^{-1}(x) y=f1(x)在区间 D x = { x = f ( y ) , y ∈ D y } D_x=\{x=f(y), y \in D_y\} Dx={x=f(y),yDy}内也可导, 且满足以下公式
[ f − 1 ( x ) ] ′ = 1 f ′ ( y ) 或 d y d x = 1 d x d y [f^{-1}(x)]' = \frac{1}{f'(y)} 或 \frac{dy}{dx} = \frac{\frac{1}{dx}}{dy} [f1(x)]=f(y)1dxdy=dydx1

复合函数的求导法则

如果 u = g ( x ) u=g(x) u=g(x)在点 x x x处可导, y = f ( u ) y=f(u) y=f(u)在点 u = g ( x ) u=g(x) u=g(x)处可导, 那么复合函数 y = f [ g ( x ) ] y=f[g(x)] y=f[g(x)]在点 x x x处可导, 且其导数为 d y d x = f ′ ( u ) ∗ g ′ ( x ) 或 d y d x = d y d u ∗ d u d x \frac{dy}{dx}=f'(u) * g'(x)或 \frac{dy}{dx}= \frac{dy}{du} * \frac{du}{dx} dxdy=f(u)g(x)dxdy=dudydxdu

常用求导公式

一、基础函数导数
常数函数
d d x ( c ) = 0 \frac{d}{dx}(c) = 0 dxd(c)=0
解释:常数无变化率,导数为0。

幂函数
d d x ( x n ) = n x n − 1 \frac{d}{dx}(x^n) = n x^{n-1} dxd(xn)=nxn1
解释:幂法则,指数乘系数后指数减1( n n n为任意实数)。

自然指数函数
d d x ( e x ) = e x \frac{d}{dx}(e^x) = e^x dxd(ex)=ex
解释:自然指数函数的导数与自身相同。

一般指数函数
d d x ( a x ) = a x ln ⁡ a \frac{d}{dx}(a^x) = a^x \ln a dxd(ax)=axlna
解释:底数为 a a a的指数函数导数需乘以 ln ⁡ a \ln a lna

自然对数函数
d d x ( ln ⁡ x ) = 1 x \frac{d}{dx}(\ln x) = \frac{1}{x} dxd(lnx)=x1
解释:对数函数的导数与自变量成反比。

对数函数(底数 a a a
d d x ( log ⁡ a x ) = 1 x ln ⁡ a \frac{d}{dx}(\log_a x) = \frac{1}{x \ln a} dxd(logax)=xlna1
解释:换底公式推导出的对数导数。

二、三角函数导数
d d x ( sin ⁡ x ) = cos ⁡ x \frac{d}{dx}(\sin x) = \cos x dxd(sinx)=cosx
解释:正弦函数的导数是余弦。

d d x ( cos ⁡ x ) = − sin ⁡ x \frac{d}{dx}(\cos x) = -\sin x dxd(cosx)=sinx
解释:余弦函数的导数是负正弦。

d d x ( tan ⁡ x ) = sec ⁡ 2 x \frac{d}{dx}(\tan x) = \sec^2 x dxd(tanx)=sec2x
解释:正切函数的导数为正割平方。

d d x ( cot ⁡ x ) = − csc ⁡ 2 x \frac{d}{dx}(\cot x) = -\csc^2 x dxd(cotx)=csc2x
解释:余切函数的导数为负余割平方。

d d x ( sec ⁡ x ) = sec ⁡ x tan ⁡ x \frac{d}{dx}(\sec x) = \sec x \tan x dxd(secx)=secxtanx
解释:正割的导数是正割乘正切。

d d x ( csc ⁡ x ) = − csc ⁡ x cot ⁡ x \frac{d}{dx}(\csc x) = -\csc x \cot x dxd(cscx)=cscxcotx
解释:余割的导数是负余割乘余切。

三、反三角函数导数
d d x ( arcsin ⁡ x ) = 1 1 − x 2 \frac{d}{dx}(\arcsin x) = \frac{1}{\sqrt{1-x^2}} dxd(arcsinx)=1x2 1
解释:反正弦函数的导数与根号内 1 − x 2 1-x^2 1x2相关。

d d x ( arccos ⁡ x ) = − 1 1 − x 2 \frac{d}{dx}(\arccos x) = -\frac{1}{\sqrt{1-x^2}} dxd(arccosx)=1x2 1
解释:反余弦函数的导数为负的相同形式。

d d x ( arctan ⁡ x ) = 1 1 + x 2 \frac{d}{dx}(\arctan x) = \frac{1}{1+x^2} dxd(arctanx)=1+x21
解释:反正切函数的导数为分母 1 + x 2 1+x^2 1+x2的分数。

编程求导

import sympy as sp

# 定义变量 x
x = sp.Symbol('x')

# 定义函数 y = f(x)
f_x = x**2 + 2*x + 1

# 求导函数
d_f = sp.diff(f_x, x)
print(d_f)
# output: 2*x + 2

# sqrt(x): 平方根
f_x = sp.asin(sp.sqrt(sp.sin(x)))
d_f = sp.diff(f_x, x)
print(d_f)
# output: cos(x)/(2*sqrt(1 - sin(x))*sqrt(sin(x)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值