微分中值定理
费马引理
在的邻域有定义,并且处可导,对,有:
或
那么.
推论:函数f在定义域A内的最大值和最小值只能在边界上,不可导的点,或驻点取得。
在这里,f(x_0)其实是个极大值。
可以用python画出示意图:
import numpy as np
import matplotlib.pyplot as plt
# 定义函数 f(x)
def f(x):
return - (x - 2)**2 + 4
# 生成 x 数据
x = np.linspace(0, 4, 400)
y = f(x)
# 绘制函数图像
plt.figure(figsize=(8, 6))
plt.plot(x, y, label='$f(x) = -(x - 2)^2 + 4$', color='blue')
# 标记极值点
x0 = 2
y0 = f(x0)
plt.plot(x0, y0, 'ro') # 极值点
plt.text(x0, y0 + 0.5, '$x_0$', fontsize=12, ha='center')
# 绘制切线(导数为零)
plt.axhline(y0, color='gray', linestyle='--')
# 设置图形属性
plt.title('示意图:费马引理')
plt.xlabel('$x$')
plt.ylabel('$f(x)$')
plt.legend()
plt.grid(True)
plt.show()
warning
试证明费马引理.
答案
对于, , 有很小的使得
要想证明,可以研究的定义。
在处可导代表着左右可导,所以上面两个式子成立的时候也就只能是他们相等的时候。
故.
驻点:导数为0的点。但是它可能不是最大值也不是最小值点。
罗尔定理
满足:
- 在[a,b]连续
- 在(a,b)内可导
- ,则至少
import numpy as np
import matplotlib.pyplot as plt
# 定义函数 f(x)
def f(x):
return (x - 1)**2 - 1 # 选择一个简单的二次函数
# 生成 x 数据
x = np.linspace(-2, 4, 400)
y = f(x)
# 绘制函数图像
plt.figure(figsize=(8, 6))
plt.plot(x, y, label='$f(x) = (x - 1)^2 - 1$', color='blue')
# 标记端点 a 和 b
a, b = 0, 2
fa, fb = f(a), f(b)
plt.plot(a, fa, 'ro', label='$f(a) = f(b)$')
plt.plot(b, fb, 'ro')
# 标记极值点 x0
x0 = 1
y0 = f(x0)
plt.plot(x0, y0, 'go') # 极值点
plt.text(x0, y0 + 0.5, '$x_0$', fontsize=12, ha='center')
# 绘制切线(导数为零)
plt.axhline(y0, color='gray', linestyle='--')
# 设置图形属性
plt.title('示意图:罗尔定理')
plt.xlabel('$x$')
plt.ylabel('$f(x)$')
plt.legend()
plt.grid(True)
plt.show()
拉格朗日中值定理
满足:
- 在[a,b]连续
- 在(a,b)内可导
- ,则至少
import numpy as np
import matplotlib.pyplot as plt
# 定义函数 f(x)
def f(x):
return np.sin(x) # 选择一个简单的正弦函数
# 生成 x 数据
x = np.linspace(0, 2 * np.pi, 400)
y = f(x)
# 端点
a, b = 0, 2 * np.pi
fa, fb = f(a), f(b)
# 找到导数为零的点
from scipy.optimize import minimize_scalar
def neg_f_prime(x):
return -np.cos(x) # 负导数
result = minimize_scalar(neg_f_prime, bounds=(a, b), method='bounded')
x0 = result.x
y0 = f(x0)
# 绘制函数图像
plt.figure(figsize=(8, 6))
plt.plot(x, y, label='$f(x) = \sin(x)$', color='blue')
# 标记端点 a 和 b
plt.plot(a, fa, 'ro', label='$f(a) = f(b)$')
plt.plot(b, fb, 'ro')
# 标记导数为零的点 x0
plt.plot(x0, y0, 'go') # 极值点
plt.text(x0, y0 + 0.5, '$x_0$', fontsize=12, ha='center')
# 绘制切线(导数为零)
plt.axhline(y0, color='gray', linestyle='--')
# 设置图形属性
plt.title('Lagrange mean value theorem')
plt.xlabel('$x$')
plt.ylabel('$f(x)$')
plt.legend()
plt.grid(True)
plt.show()
要想证明拉格朗日中值定理,可以做一个线性替换.也就是替换坐标系.
定理:在区间I上连续,I内可导且导数恒为0,
证明:
柯西中值定理
使,至少有一点
柯西中值定理:若和
- [a,b]连续
- 在(a,b)内可导
- ,
则至少,
柯西中值定理相较来说更加一般.
import numpy as np
import matplotlib.pyplot as plt
# 定义函数 f(x) 和 g(x)
def f(x):
return np.sin(x)
def g(x):
return x
# 生成 x 数据
x = np.linspace(0, 2 * np.pi, 400)
y_f = f(x)
y_g = g(x)
# 端点
a, b = 0, 2 * np.pi
fa, fb = f(a), f(b)
ga, gb = g(a), g(b)
# 找到导数比值符合柯西中值定理的点
from scipy.optimize import minimize_scalar
def mean_value_condition(x):
return (np.cos(x) / 1) - (fb - fa) / (gb - ga)
result = minimize_scalar(mean_value_condition, bounds=(a, b), method='bounded')
x0 = result.x
y0_f = f(x0)
y0_g = g(x0)
# 绘制函数图像
plt.figure(figsize=(10, 6))
# 绘制 f(x) 和 g(x)
plt.plot(x, y_f, label='$f(x) = \sin(x)$', color='blue')
plt.plot(x, y_g, label='$g(x) = x$', color='red')
# 标记端点 a 和 b
plt.plot(a, fa, 'bo', label='$f(a)$, $g(a)$')
plt.plot(b, fb, 'bo')
plt.plot(a, ga, 'ro')
plt.plot(b, gb, 'ro')
# 标记点 x0
plt.plot(x0, y0_f, 'go') # 对应 f(x)
plt.plot(x0, y0_g, 'go') # 对应 g(x)
plt.text(x0, y0_f + 0.5, '$x_0$', fontsize=12, ha='center')
# 绘制导数比值的条件
plt.axhline(y=f(x0) / g(x0), color='gray', linestyle='--')
# 设置图形属性
plt.title('示意图:柯西中值定理')
plt.xlabel('$x$')
plt.ylabel('$f(x)$ 和 $g(x)$')
plt.legend()
plt.grid(True)
plt.show()
泰勒定理
定理:
表示成的次多项式+,
拉格朗日型余项:
马克劳林公式:
,阶马克劳林公式:
tip
,