「用Python来学微积分」15. 连续函数的性质


连续函数是数学分析的核心概念,其性质是理解微积分的关键。本文将结合Python可视化,从基本概念到重要性质,系统讲解连续函数的特性,并通过丰富的代码示例帮助读者建立直观理解。

一、连续函数基本概念回顾

连续性描述的是函数在某一点附近的光滑行为。从几何角度看,连续函数的图像是一条"连绵不断"的曲线,笔不离纸就能画出。

1.1 连续性的严格定义

数学定义:函数 f ( x ) f(x) f(x) 在点 x 0 x_0 x0 处连续,当且仅当满足:

  • x 0 x_0 x0 处有定义( f ( x 0 ) f(x_0) f(x0) 存在)
  • lim ⁡ x → x 0 f ( x ) \lim \limits_{x \to x_0} f(x) xx0limf(x) 存在
  • lim ⁡ x → x 0 f ( x ) = f ( x 0 ) \lim \limits_{x \to x_0} f(x) = f(x_0) xx0limf(x)=f(x0)

用ε-δ语言表述:对任意 ε > 0 \varepsilon > 0 ε>0,存在 δ > 0 \delta > 0 δ>0,使得当 ∣ x − x 0 ∣ < δ |x - x_0| < \delta xx0<δ 时,有 ∣ f ( x ) − f ( x 0 ) ∣ < ε |f(x) - f(x_0)| < \varepsilon f(x)f(x0)<ε

手动求解步骤: 对于函数 f ( x ) = x 2 f(x) = x^2 f(x)=x2 x 0 = 2 x_0 = 2 x0=2 处的连续性证明:

  • f ( 2 ) = 4 f(2) = 4 f(2)=4,函数在 x = 2 x=2 x=2有定义
  • lim ⁡ x → 2 x 2 = 4 \lim \limits_{x \to 2} x^2 = 4 x2limx2=4,极限存在
  • lim ⁡ x → 2 x 2 = 4 = f ( 2 ) \lim \limits_{x \to 2} x^2 = 4 = f(2) x2limx2=4=f(2),满足连续性条件

Python代码:

import matplotlib.pyplot as plt
import numpy as np

# 设置支持 Unicode 的字体
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei','DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False

# 连续性的ε-δ演示
def demonstrate_continuity():
    # 示例函数:f(x) = x^2 在 x=2 处的连续性
    def f(x):
        return x**2
    
    x0 = 2
    f_x0 = f(x0)
    epsilon = 0.5
    
    # 计算对应的delta
    # 对于f(x)=x^2,|f(x)-f(2)| = |x^2-4| = |x-2||x+2|
    # 当|x-2|<1时,|x+2|<5,所以取delta = min(1, epsilon/5)
    delta = min(1, epsilon/5)
    
    x_values = np.linspace(x0 - 2*delta, x0 + 2*delta, 100)
    y_values = f(x_values)
    
    plt.figure(figsize=(10, 6))
    plt.plot(x_values, y_values, 'b-', linewidth=2, label='f(x) = x²')
    plt.axvline(x=x0, color='r', linestyle='--', alpha=0.7, label=f'x_0 = {x0}')
    plt.axhline(y=f_x0, color='r', linestyle='--', alpha=0.7, label=f'f(x_0) = {f_x0}')
    
    # 显示ε区间
    plt.axhline(y=f_x0 + epsilon, color='g', linestyle=':', alpha=0.5, label='ε区间')
    plt.axhline(y=f_x0 - epsilon, color='g', linestyle=':', alpha=0.5)
    plt.fill_between(x_values, f_x0 - epsilon, f_x0 + epsilon, alpha=0.1, color='green')
    
    # 显示δ区间
    plt.axvline(x=x0 + delta, color='orange', linestyle=':', alpha=0.5, label='δ区间')
    plt.axvline(x=x0 - delta, color='orange', linestyle=':', alpha=0.5)
    plt.fill_betweenx(y_values, x0 - delta, x0 + delta, alpha=0.1, color='orange')
    
    plt.scatter([x0], [f_x0], color='red', s=50, zorder=5)
    plt.title('函数连续性演示: ε-δ定义')
    plt.xlabel('x')
    plt.ylabel('f(x)')
    plt.legend()
    plt.grid(True, alpha=0.3)
    plt.show()
    
    print(f"对于 ε = {epsilon}, 找到 δ = {delta:.3f}")
    print(f"当 |x - {x0}| < {delta:.3f} 时,|f(x) - {f_x0}| < {epsilon}")

demonstrate_continuity()

Python代码执行结果:

image.png

1.2 单侧连续性

数学定义:单侧连续性

  • 左连续: lim ⁡ x → x 0 − f ( x ) = f ( x 0 ) \lim \limits_{x \to x_0^-} f(x) = f(x_0) xx0limf(x)=f(x0)
  • 右连续: lim ⁡ x → x 0 + f ( x ) = f ( x 0 ) \lim \limits_{x \to x_0^+} f(x) = f(x_0) xx0+limf(x)=f(x0)

定理:函数在一点连续的充要条件是在该点既左连续又右连续。

二、连续函数的局部性质

2.1 局部保号性:函数值的"传染性"

数学定理:如果函数 f ( x ) f(x) f(x) x 0 x_0 x0 处连续,且 f ( x 0 ) > 0 f(x_0) > 0 f(x0)>0,那么存在正数 δ \delta δ,使得当 x ∈ ( x 0 − δ , x 0 + δ ) x \in (x_0-\delta, x_0+\delta) x(x0δ,x0+δ) 时, f ( x ) > 0 f(x) > 0 f(x)>0

手动证明步骤:

  • 由连续性定义,对 ε = f ( x 0 ) 2 > 0 \varepsilon = \frac{f(x_0)}{2} > 0 ε=2f(x0)>0,存在 δ > 0 \delta > 0 δ>0
  • ∣ x − x 0 ∣ < δ |x - x_0| < \delta xx0<δ 时, ∣ f ( x ) − f ( x 0 ) ∣ < f ( x 0 ) 2 |f(x) - f(x_0)| < \frac{f(x_0)}{2} f(x)f(x0)<2f(x0)
  • 因此 f ( x ) > f ( x 0 ) − f ( x 0 ) 2 = f ( x 0 ) 2 > 0 f(x) > f(x_0) - \frac{f(x_0)}{2} = \frac{f(x_0)}{2} > 0 f(x)>f(x0)2f(x0)=2f(x0)>0
  • 证毕

Python代码:

import matplotlib.pyplot as plt
import numpy as np

# 中文显示
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei','DV Sans']
plt.rcParams['axes.unicode_minus'] = False

# 演示局部保号性
x = np.linspace(-2, 2, 1000)
f = lambda x: x**2 + 0.5  # 始终大于0的函数

x0, delta = 0.5, 0.8
plt.figure(figsize=(10, 6))
plt.plot(x, f(x), 'b-', linewidth=2, label='f(x) = x² + 0.5')

# 标记邻域范围
plt.axvline(x=x0-delta, color='orange', linestyle=':', alpha=0.7)
plt.axvline(x=x0+delta, color='orange', linestyle=':', alpha=0.7)
plt.fill_between(x, 0, f(x), where=(x >= x0-delta) & (x <= x0+delta), 
                alpha=0.2, color='green', label='保号区间')

plt.title('局部保号性演示:f(x_o)>0 在x_o邻域内f(x)>0')
plt.xlabel('x'); plt.ylabel('f(x)')
plt.legend(); plt.grid(True, alpha=0.3)
plt.show()

Python代码执行结果: x 0 = 0.5 x_0=0.5 x0=0.5 周围的邻域内,函数值始终大于0,直观演示局部保号性。

image.png

2.2 局部有界性:连续点的"稳定性"

数学定理:如果函数 f ( x ) f(x) f(x) x 0 x_0 x0 处连续,那么存在正数 δ \delta δ,使得 f ( x ) f(x) f(x) ( x 0 − δ , x 0 + δ ) (x_0-\delta, x_0+\delta) (x0δ,x0+δ) 上有界。

手动证明思路:

  • ε = 1 \varepsilon = 1 ε=1,由连续性,存在 δ > 0 \delta > 0 δ>0
  • ∣ x − x 0 ∣ < δ |x - x_0| < \delta xx0<δ 时, ∣ f ( x ) − f ( x 0 ) ∣ < 1 |f(x) - f(x_0)| < 1 f(x)f(x0)<1
  • 因此 ∣ f ( x ) ∣ < ∣ f ( x 0 ) ∣ + 1 |f(x)| < |f(x_0)| + 1 f(x)<f(x0)+1
  • 函数在邻域内有上界 ∣ f ( x 0 ) ∣ + 1 |f(x_0)| + 1 f(x0)+1 和下界 − ∣ f ( x 0 ) ∣ − 1 -|f(x_0)| - 1 f(x0)1

Python代码:

import matplotlib.pyplot as plt
import numpy as np

# 中文显示
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei','DV Sans']
plt.rcParams['axes.unicode_minus'] = False

def local_boundedness():
    x0 = 1
    delta = 0.5
    x = np.linspace(x0 - delta, x0 + delta, 100)
    f_x = np.sin(x) * np.exp(x)  # 复杂但连续的函数
    
    plt.figure(figsize=(10, 6))
    plt.plot(x, f_x, 'b-', linewidth=2, label='f(x) = sin(x) * exp(x)')
    plt.axvline(x=x0-delta, color='r', linestyle='--', alpha=0.7)
    plt.axvline(x=x0+delta, color='r', linestyle='--', alpha=0.7)
    
    # 计算上下界
    upper_bound = max(f_x)
    lower_bound = min(f_x)
    
    plt.axhline(y=upper_bound, color='g', linestyle=':', label=f'上界: {upper_bound:.2f}')
    plt.axhline(y=lower_bound, color='g', linestyle=':', label=f'下界: {lower_bound:.2f}')
    
    plt.title('局部有界性演示')
    plt.xlabel('x'); plt.ylabel('f(x)')
    plt.legend(); plt.grid(True, alpha=0.3)
    plt.show()

local_boundedness()

Python代码执行结果: 显示函数在 x 0 = 1 x_0=1 x0=1 邻域内的图像,并标出该区间内的上下界,验证局部有界性。

image.png

三、连续函数的全局性质

3.1 零点存在定理:方程的"解的存在保证"

数学定义:如果函数 f ( x ) f(x) f(x) 在闭区间 [ a , b ] [a,b] [a,b] 上连续,且 f ( a ) f(a) f(a) f ( b ) f(b) f(b) 异号,那么至少存在一点 ξ ∈ ( a , b ) \xi \in (a,b) ξ(a,b),使得 f ( ξ ) = 0 f(\xi) = 0 f(ξ)=0

手动求解步骤:

  • f ( x ) = 2 x + x f(x) = 2^x + x f(x)=2x+x [ − 1 , 0 ] [-1,0] [1,0] 上连续
  • f ( − 1 ) = 2 − 1 − 1 = 0.5 − 1 = − 0.5 < 0 f(-1) = 2^{-1} - 1 = 0.5 - 1 = -0.5 < 0 f(1)=211=0.51=0.5<0
  • f ( 0 ) = 2 0 + 0 = 1 > 0 f(0) = 2^0 + 0 = 1 > 0 f(0)=20+0=1>0
  • 由零点存在定理,存在 ξ ∈ ( − 1 , 0 ) \xi \in (-1,0) ξ(1,0) 使 f ( ξ ) = 0 f(\xi) = 0 f(ξ)=0
  • 又因为 f ′ ( x ) = 2 x ln ⁡ 2 + 1 > 0 f'(x) = 2^x \ln 2 + 1 > 0 f(x)=2xln2+1>0,函数单调递增,零点唯一

Python代码:

import matplotlib.pyplot as plt
import numpy as np

# 中文显示
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False
def prove_root_existence():
    """证明方程 2^x + x = 0 在(-1,0)内有唯一实根"""
    x = np.linspace(-1, 0, 1000)
    f = lambda x: 2**x + x
    
    plt.figure(figsize=(10, 6))
    plt.plot(x, f(x), 'b-', linewidth=2, label='f(x) = 2^x + x')
    plt.axhline(y=0, color='k', linestyle='-', alpha=0.3)
    
    # 验证端点异号
    f_minus1, f_0 = f(-1), f(0)
    plt.scatter([-1, 0], [f_minus1, f_0], color='red', s=100)
    plt.annotate(f'f(-1) = {f_minus1:.3f} < 0', (-1, f_minus1), 
                xytext=(-0.85, f_minus1 + 0.1))
    plt.annotate(f'f(0) = {f_0:.3f} > 0', (0, f_0), 
                xytext=(-0.1, f_0 - 0.2))
    
    # 寻找零点
    root_x = x[np.argmin(np.abs(f(x)))]
    plt.scatter([root_x], [f(root_x)], color='green', s=100,
               label=f'零点 ξ ≈ {root_x:.3f}')
    
    plt.title('零点存在定理:方程 2^x + x = 0 在 (-1,0) 内有根')
    plt.xlabel('x'); 
    plt.ylabel('f(x)')
    plt.legend(); 
    plt.grid(True, alpha=0.3)
    plt.show()

prove_root_existence()

Python代码执行结果: 标注端点值和找到的零点位置,验证零点存在定理。

image.png

3.2 介值定理:函数值的"全覆盖性"

数学定义:如果函数 f ( x ) f(x) f(x) 在闭区间 [ a , b ] [a,b] [a,b] 上连续,且 f ( a ) ≠ f ( b ) f(a) \neq f(b) f(a)=f(b),那么对于任意介于 f ( a ) f(a) f(a) f ( b ) f(b) f(b) 之间的实数 μ \mu μ,至少存在一点 ξ ∈ ( a , b ) \xi \in (a,b) ξ(a,b),使得 f ( ξ ) = μ f(\xi) = \mu f(ξ)=μ

手动证明思路:

  • 构造辅助函数 g ( x ) = f ( x ) − μ g(x) = f(x) - \mu g(x)=f(x)μ
  • g ( a ) = f ( a ) − μ g(a) = f(a) - \mu g(a)=f(a)μ g ( b ) = f ( b ) − μ g(b) = f(b) - \mu g(b)=f(b)μ 异号
  • 由零点存在定理,存在 ξ ∈ ( a , b ) \xi \in (a,b) ξ(a,b) 使 g ( ξ ) = 0 g(\xi) = 0 g(ξ)=0
  • f ( ξ ) = μ f(\xi) = \mu f(ξ)=μ

Python代码:

def intermediate_value_theorem():
    x = np.linspace(0, 2*np.pi, 1000)
    f = np.sin(x)
    
    a, b = 0.5, 4.5
    mu = 0.7  # 介于sin(0.5)和sin(4.5)之间的值
    
    plt.figure(figsize=(12, 6))
    plt.plot(x, f, 'b-', linewidth=2, label='f(x) = sin(x)')
    plt.axhline(y=mu, color='r', linestyle='--', label=f'μ = {mu}')
    
    # 标记区间端点
    plt.scatter([a, b], [np.sin(a), np.sin(b)], color='green', s=100)
    
    # 寻找介值点
    roots = []
    for i in range(len(x)-1):
        if (f[i] - mu) * (f[i+1] - mu) <= 0:
            root_x = x[i] + (x[i+1] - x[i]) * (mu - f[i]) / (f[i+1] - f[i])
            roots.append(root_x)
            plt.scatter([root_x], [mu], color='red', s=100)
    
    plt.title('介值定理演示')
    plt.xlabel('x'); 
    plt.ylabel('f(x)')
    plt.legend(); 
    plt.grid(True, alpha=0.3)
    plt.show()

intermediate_value_theorem()

Python代码执行结果: 显示正弦函数图像,标注介值点,验证介值定理。

image.png

四、闭区间上连续函数的性质

4.1 有界性定理:闭区间上的"安全保证"

数学定义:如果函数 f ( x ) f(x) f(x) 在闭区间 [ a , b ] [a,b] [a,b] 上连续,那么 f ( x ) f(x) f(x) [ a , b ] [a,b] [a,b] 上有界。

定理证明概要:

  • 利用有限覆盖定理:闭区间 [ a , b ] [a,b] [a,b] 的任意开覆盖都有有限子覆盖
  • 由局部有界性,每点 x ∈ [ a , b ] x \in [a,b] x[a,b] 都有邻域 U ( x ) U(x) U(x) 使 f f f U ( x ) U(x) U(x) 上有界
  • U ( x ) x ∈ [ a , b ] {U(x)}_{x \in [a,b]} U(x)x[a,b] [ a , b ] [a,b] [a,b] 的开覆盖,存在有限子覆盖
  • f f f 在每个有限子覆盖区间上有界,因此在整个 [ a , b ] [a,b] [a,b] 上有界

Python代码:

def bounded_on_closed_interval():
    x = np.linspace(0.1, 2, 1000)
    f = lambda x: 1/x  # 在(0,2]上连续,但在x=0无定义
    
    plt.figure(figsize=(10, 6))
    plt.plot(x, f(x), 'b-', linewidth=2, label='f(x) = 1/x')
    
    # 在闭区间[0.5, 2]上验证有界性
    a, b = 0.5, 2
    x_closed = np.linspace(a, b, 100)
    f_closed = f(x_closed)
    
    upper_bound = max(f_closed)
    lower_bound = min(f_closed)
    
    plt.axvline(x=a, color='r', linestyle='--', label=f'区间[{a},{b}]')
    plt.axvline(x=b, color='r', linestyle='--')
    plt.axhline(y=upper_bound, color='g', linestyle=':', label=f'上界: {upper_bound:.2f}')
    plt.axhline(y=lower_bound, color='g', linestyle=':', label=f'下界: {lower_bound:.2f}')
    
    plt.title('闭区间上连续函数的有界性')
    plt.xlabel('x'); plt.ylabel('f(x)')
    plt.legend(); plt.grid(True, alpha=0.3)
    plt.show()

bounded_on_closed_interval()

Python代码执行结果: 显示函数在闭区间上的图像,标注上下界,验证有界性定理。

image.png

4.2 最值存在定理:必然存在"冠军选手"

数学定义:如果函数 f ( x ) f(x) f(x) 在闭区间 [ a , b ] [a,b] [a,b] 上连续,则存在 [ a , b ] [a,b] [a,b] 中的两点 ξ , η \xi, \eta ξ,η,使得对任意的 x ∈ [ a , b ] x \in [a,b] x[a,b],都有 f ( ξ ) ≤ f ( x ) ≤ f ( η ) f(\xi) \leq f(x) \leq f(\eta) f(ξ)f(x)f(η)

证明思路:

  • 由有界性定理, f ( [ a , b ] ) f([a,b]) f([a,b]) 是有界数集
  • M = sup ⁡ f ( x ) : x ∈ [ a , b ] M = \sup{f(x) : x \in [a,b]} M=supf(x):x[a,b] m = inf ⁡ f ( x ) : x ∈ [ a , b ] m = \inf{f(x) : x \in [a,b]} m=inff(x):x[a,b]
  • 由上确界定义,存在数列 x n ⊂ [ a , b ] {x_n} \subset [a,b] xn[a,b] 使 f ( x n ) → M f(x_n) \to M f(xn)M
  • 由闭区间紧性, x n {x_n} xn 有收敛子列 x n k → η ∈ [ a , b ] x_{n_k} \to \eta \in [a,b] xnkη[a,b]
  • 由连续性, f ( η ) = lim ⁡ k → ∞ f ( x n k ) = M f(\eta) = \lim \limits_{k \to \infty} f(x_{n_k}) = M f(η)=klimf(xnk)=M
  • 同理可证最小值存在

Python代码:

def extreme_value_theorem():
    x = np.linspace(-np.pi, np.pi, 1000)
    f = lambda x: x*np.sin(3*x) + np.cos(x)  # 复杂连续函数
    
    plt.figure(figsize=(12, 6))
    plt.plot(x, f(x), 'b-', linewidth=2, label='f(x) = x·sin(3x) + cos(x)')
    
    # 寻找最大值和最小值点
    max_idx = np.argmax(f(x))
    min_idx = np.argmin(f(x))
    
    x_max, y_max = x[max_idx], f(x)[max_idx]
    x_min, y_min = x[min_idx], f(x)[min_idx]
    
    plt.scatter([x_max, x_min], [y_max, y_min], 
               color=['red', 'green'], s=100, 
               label=[f'最大值点 ({x_max:.2f}, {y_max:.2f})', 
                      f'最小值点 ({x_min:.2f}, {y_min:.2f})'])
    
    plt.title('最值存在定理演示')
    plt.xlabel('x'); plt.ylabel('f(x)')
    plt.legend(); plt.grid(True, alpha=0.3)
    plt.show()

extreme_value_theorem()

Python代码执行结果: 显示函数图像,标注最大值点和最小值点,验证最值存在定理。

image.png

五、综合应用与Python实践

5.1 实例分析:物体运动问题

问题:设某物体用100秒钟连续移动了100米。求证存在某个时刻 t 0 t_0 t0,使得在时间段 [ t 0 , t 0 + 20 ] [t_0, t_0+20] [t0,t0+20] 中该物体恰好移动了20米。

手动证明:

  • 定义位移函数 s ( t ) s(t) s(t),在 [ 0 , 100 ] [0,100] [0,100] 上连续
  • 构造辅助函数 f ( t ) = s ( t + 20 ) − s ( t ) − 20 f(t) = s(t+20) - s(t) - 20 f(t)=s(t+20)s(t)20,在 [ 0 , 80 ] [0,80] [0,80] 上连续
  • 计算端点值:
    • f ( 0 ) = s ( 20 ) − s ( 0 ) − 20 f(0) = s(20) - s(0) - 20 f(0)=s(20)s(0)20
    • f ( 80 ) = s ( 100 ) − s ( 80 ) − 20 f(80) = s(100) - s(80) - 20 f(80)=s(100)s(80)20
  • 由题意, s ( 100 ) − s ( 0 ) = 100 s(100) - s(0) = 100 s(100)s(0)=100,且运动连续
  • f ( 0 ) ⋅ f ( 80 ) ≤ 0 f(0) \cdot f(80) \leq 0 f(0)f(80)0,由零点定理存在 t 0 ∈ [ 0 , 80 ] t_0 \in [0,80] t0[0,80] 使 f ( t 0 ) = 0 f(t_0) = 0 f(t0)=0
  • s ( t 0 + 20 ) − s ( t 0 ) = 20 s(t_0+20) - s(t_0) = 20 s(t0+20)s(t0)=20

Python代码:

def motion_problem():
    # 模拟物体运动函数
    def s(t):
        # 假设运动不是匀速的
        return 100 * (t/100)**1.5  # s(0)=0, s(100)=100
    
    t = np.linspace(0, 100, 1000)
    positions = s(t)
    
    # 定义辅助函数 f(t) = s(t+20) - s(t) - 20
    t_inner = np.linspace(0, 80, 800)  # t ∈ [0,80] 保证 t+20 ∈ [20,100]
    f_t = s(t_inner + 20) - s(t_inner) - 20
    
    plt.figure(figsize=(12, 8))
    
    plt.subplot(2, 1, 1)
    plt.plot(t, positions, 'b-', linewidth=2, label='位移函数 s(t)')
    plt.xlabel('时间 t (秒)'); plt.ylabel('位移 s(t) (米)')
    plt.legend(); plt.grid(True, alpha=0.3)
    
    plt.subplot(2, 1, 2)
    plt.plot(t_inner, f_t, 'r-', linewidth=2, label='辅助函数 f(t) = s(t+20) - s(t) - 20')
    plt.axhline(y=0, color='k', linestyle='-', alpha=0.3)
    
    # 验证端点值
    f0 = s(20) - s(0) - 20
    f80 = s(100) - s(80) - 20
    plt.scatter([0, 80], [f0, f80], color='green', s=100)
    
    # 寻找零点
    root_idx = np.argmin(np.abs(f_t))
    t0 = t_inner[root_idx]
    plt.scatter([t0], [f_t[root_idx]], color='red', s=100, 
               label=f'零点 t₀ ≈ {t0:.1f}')
    
    plt.xlabel('时间 t (秒)'); plt.ylabel('f(t)')
    plt.legend(); plt.grid(True, alpha=0.3)
    
    plt.tight_layout()
    plt.show()
    
    print(f"f(0) = s(20) - s(0) - 20 = {f0:.2f}")
    print(f"f(80) = s(100) - s(80) - 20 = {f80:.2f}")
    print(f"存在 t₀ ≈ {t0:.1f} 使 f(t₀) = 0")
    print(f"验证: s({t0:.1f}+20) - s({t0:.1f}) = {s(t0+20) - s(t0):.2f} 米")

motion_problem()

Python代码执行结果: 显示位移函数和辅助函数图像,找到满足条件的时刻 t 0 t_0 t0,并输出验证结果。

image.png

image.png

5.2 Python挑战练习

挑战1:验证函数 f(x) = 1/x 在(0,1)上连续但无界

手动分析:

  • 在开区间(0,1)上,函数 f ( x ) = 1 / x f(x) = 1/x f(x)=1/x 是连续的
  • 但当 x → 0 + x \to 0^+ x0+ 时, f ( x ) → + ∞ f(x) \to +\infty f(x)+,函数无上界

Python代码:

# 挑战1:验证函数 f(x) = 1/x 在(0,1)上连续但无界
def challenge1():
    x = np.linspace(0.01, 1, 1000)
    f = 1/x
    
    plt.figure(figsize=(10, 6))
    plt.plot(x, f, 'b-', linewidth=2, label='f(x) = 1/x')
    plt.title('挑战1: f(x) = 1/x 在(0,1)上连续但无界')
    plt.xlabel('x'); plt.ylabel('f(x)')
    plt.legend(); plt.grid(True, alpha=0.3)
    plt.show()
    
    print("在开区间(0,1)上,当x→0⁺时,f(x)→+∞,函数无界")

challenge1()

Python代码执行结果:

image.png

挑战2:绘制函数证明三次多项式必有实根

手动证明思路:

  • 三次多项式 f ( x ) = a x 3 + b x 2 + c x + d f(x) = ax^3 + bx^2 + cx + d f(x)=ax3+bx2+cx+d a ≠ 0 a \neq 0 a=0
  • x → + ∞ x \to +\infty x+ 时, f ( x ) → ± ∞ f(x) \to \pm\infty f(x)±(取决于 a a a的符号)
  • x → − ∞ x \to -\infty x 时, f ( x ) → ∓ ∞ f(x) \to \mp\infty f(x)
  • 由介值定理,必存在实根

Python代码:

# 挑战2:绘制函数证明三次多项式必有实根
def challenge2():
    # 三次多项式至少有一个实根
    x = np.linspace(-3, 3, 1000)
    f = lambda x: x**3 - 2*x + 1  # 任意三次多项式
    
    plt.figure(figsize=(10, 6))
    plt.plot(x, f(x), 'b-', linewidth=2, label='f(x) = x³ - 2x + 1')
    plt.axhline(y=0, color='k', linestyle='-', alpha=0.3)
    
    # 验证存在实根
    roots = []
    for i in range(len(x)-1):
        if f(x[i]) * f(x[i+1]) <= 0:
            root = x[i] - f(x[i]) * (x[i+1] - x[i]) / (f(x[i+1]) - f(x[i]))
            roots.append(root)
            plt.scatter([root], [0], color='red', s=100)
    
    plt.title('挑战2: 三次多项式必有实根')
    plt.xlabel('x'); plt.ylabel('f(x)')
    plt.legend(); plt.grid(True, alpha=0.3)
    plt.show()
    
    print(f"找到实根: {roots}")

challenge2()

Python代码执行结果:

image.png

六、总结与延伸学习

连续函数的性质为微积分奠定了坚实基础:

6.1 知识总结

  • 局部性质:局部保号性、局部有界性,反映函数在一点附近的行为
  • 全局性质:零点定理、介值定理,描述函数在整个区间上的特征
  • 闭区间性质:有界性定理、最值定理,是优化理论的基础

6.2 学习建议

  • 理论理解:结合几何直观理解每个定理的数学含义
  • Python实践:通过可视化加深对抽象概念的认识
  • 应用导向:将定理应用于实际问题求解

参考资料:扈志明,《微积分》,高等教育出版社

互动邀请:如果你有更好的可视化想法或发现了文章中的错误,欢迎在评论区留言讨论!

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员大雄学编程

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值