跳转至

高等数学教程

高等数学是理工科的重要基础课程,包括微积分、线性代数、概率论等内容。本教程将带你学习高等数学的核心概念和方法。

第一章:极限与连续

(一)数列极限

数列极限的定义: 对于数列 {aₙ},如果存在常数 L,使得对于任意给定的 ε > 0,都存在正整数 N,当 n > N 时,有 |aₙ - L| < ε,则称 L 为数列 {aₙ} 的极限,记作:

lim(n→∞) aₙ = L

常用极限公式:

  1. lim(n→∞) (1/n) = 0
  2. lim(n→∞) (1 + 1/n)ⁿ = e
  3. lim(n→∞) (1 + a/n)ⁿ = eᵃ
  4. lim(n→∞) n! / nⁿ = 0
  5. lim(n→∞) √n = ∞

代码示例(计算数列极限):

def sequence_limit(sequence_func, n_max=1000000, tolerance=1e-10):
    """通过迭代计算数列极限"""
    a_n = sequence_func(1)
    for n in range(2, n_max + 1):
        a_next = sequence_func(n)
        if abs(a_next - a_n) < tolerance:
            return a_next
        a_n = a_next
    return a_n

# 示例:计算 lim(n→∞) (1 + 1/n)ⁿ
def seq1(n):
    return (1 + 1/n) ** n

print(f"lim(n→∞) (1 + 1/n)ⁿ ≈ {sequence_limit(seq1)}")  # ≈ 2.71828 (e)

# 示例:计算 lim(n→∞) (n/(n+1))
def seq2(n):
    return n / (n + 1)

print(f"lim(n→∞) (n/(n+1)) ≈ {sequence_limit(seq2)}")  # ≈ 1.0

(二)函数极限

函数极限的定义: 对于函数 f(x),如果存在常数 L,使得对于任意给定的 ε > 0,都存在 δ > 0,当 0 < |x - x₀| < δ 时,有 |f(x) - L| < ε,则称 L 为函数 f(x) 当 x → x₀ 时的极限,记作:

lim(x→x₀) f(x) = L

常用函数极限:

  1. lim(x→0) (sin x / x) = 1
  2. lim(x→0) (1 - cos x) / x² = 1/2
  3. lim(x→∞) (1 + 1/x)ˣ = e
  4. lim(x→∞) (ln x) / x = 0
  5. lim(x→0⁺) xˡⁿˣ = 1

代码示例(计算函数极限):

def function_limit(func, x0, approach='both', delta=0.001, iterations=1000):
    """通过数值方法计算函数极限"""
    def approach_from_right():
        return func(x0 + delta)

    def approach_from_left():
        return func(x0 - delta)

    if approach == 'right':
        return approach_from_right()
    elif approach == 'left':
        return approach_from_left()
    else:  # 两侧逼近
        return (approach_from_left() + approach_from_right()) / 2

# 示例:计算 lim(x→0) (sin x / x)
import math

def f1(x):
    return math.sin(x) / x if x != 0 else 1

print(f"lim(x→0) (sin x / x) ≈ {function_limit(f1, 0)}")  # ≈ 1.0

# 示例:计算 lim(x→0) (1 - cos x) / x²
def f2(x):
    return (1 - math.cos(x)) / (x**2) if x != 0 else 0.5

print(f"lim(x→0) (1 - cos x) / x² ≈ {function_limit(f2, 0)}")  # ≈ 0.5

(三)连续性

连续的定义: 函数 f(x) 在点 x₀ 连续,当且仅当满足: 1. f(x₀) 存在 2. lim(x→x₀) f(x) 存在 3. lim(x→x₀) f(x) = f(x₀)

间断点分类:

  1. 可去间断点:左右极限存在且相等,但不等于函数值
  2. 跳跃间断点:左右极限存在但不相等
  3. 无穷间断点:至少一侧极限为无穷大
  4. 振荡间断点:极限不存在(非无穷大)

代码示例(判断连续性):

def is_continuous(func, x0, delta=1e-10):
    """判断函数在 x0 处是否连续"""
    try:
        f_x0 = func(x0)
    except:
        return False  # 函数值不存在

    # 计算左右极限
    left_limit = function_limit(func, x0, approach='left', delta=delta)
    right_limit = function_limit(func, x0, approach='right', delta=delta)

    if abs(left_limit - right_limit) > 1e-8:
        return False  # 左右极限不相等

    return abs(left_limit - f_x0) < 1e-8

# 示例
def f1(x):
    return x**2

def f2(x):
    return 1/x if x != 0 else 0

def f3(x):
    return math.sin(1/x) if x != 0 else 0

print(f"f(x) = x² 在 x=0 处连续: {is_continuous(f1, 0)}")  # True
print(f"f(x) = 1/x 在 x=0 处连续: {is_continuous(f2, 0)}")  # False
print(f"f(x) = sin(1/x) 在 x=0 处连续: {is_continuous(f3, 0)}")  # False

第二章:导数与微分

(一)导数的定义

导数的定义: 函数 f(x) 在点 x₀ 处的导数定义为:

f'(x₀) = lim(Δx→0) [f(x₀ + Δx) - f(x₀)] / Δx

几何意义: 导数表示函数图像在某点处的切线斜率。

常用导数公式:

  1. (xⁿ)' = n·xⁿ⁻¹
  2. (eˣ)' = eˣ
  3. (aˣ)' = aˣ · ln a
  4. (ln x)' = 1/x
  5. (sin x)' = cos x
  6. (cos x)' = -sin x
  7. (tan x)' = sec² x

代码示例(数值求导):

def numerical_derivative(func, x, h=1e-6):
    """数值求导(使用中心差分)"""
    return (func(x + h) - func(x - h)) / (2 * h)

# 示例
def f1(x):
    return x**2

def f2(x):
    return math.sin(x)

def f3(x):
    return math.exp(x)

print(f"f(x) = x² 在 x=3 处的导数: {numerical_derivative(f1, 3)}")  # ≈ 6.0
print(f"f(x) = sin x 在 x=0 处的导数: {numerical_derivative(f2, 0)}")  # ≈ 1.0
print(f"f(x) = eˣ 在 x=1 处的导数: {numerical_derivative(f3, 1)}")  # ≈ 2.71828

(二)求导法则

基本求导法则:

  1. 常数法则:(C)' = 0
  2. 和差法则:(u ± v)' = u' ± v'
  3. 乘积法则:(uv)' = u'v + uv'
  4. 商法则:(u/v)' = (u'v - uv') / v²
  5. 链式法则:[f(g(x))]' = f'(g(x)) · g'(x)

代码示例(符号求导):

import sympy as sp

def symbolic_derivative(expr, var='x'):
    """符号求导"""
    x = sp.Symbol(var)
    return sp.diff(expr, x)

# 示例
x = sp.Symbol('x')

expr1 = x**2
expr2 = sp.sin(x)
expr3 = sp.exp(x)
expr4 = x**2 * sp.sin(x)

print(f"d/dx (x²) = {symbolic_derivative(expr1)}")  # 2*x
print(f"d/dx (sin x) = {symbolic_derivative(expr2)}")  # cos(x)
print(f"d/dx (eˣ) = {symbolic_derivative(expr3)}")  # exp(x)
print(f"d/dx (x²·sin x) = {symbolic_derivative(expr4)}")  # x**2*cos(x) + 2*x*sin(x)

(三)高阶导数

高阶导数的定义: f⁽ⁿ⁾(x) 表示函数 f(x) 的 n 阶导数。

代码示例(计算高阶导数):

def numerical_derivative_n(func, x, n, h=1e-6):
    """数值求 n 阶导数"""
    if n == 1:
        return numerical_derivative(func, x, h)

    # 使用递归方法
    def derivative_1(func, x):
        return numerical_derivative(func, x, h)

    result = func
    for _ in range(n):
        new_func = lambda x, f=result: derivative_1(f, x)
        result = new_func

    return result(x)

# 更简单的方法:使用有限差分公式
def numerical_derivative_n_finite(func, x, n, h=1e-4):
    """使用有限差分计算 n 阶导数"""
    if n == 0:
        return func(x)
    elif n == 1:
        return (func(x + h) - func(x - h)) / (2 * h)
    elif n == 2:
        return (func(x + h) - 2 * func(x) + func(x - h)) / (h**2)
    else:
        # 对于更高阶导数,使用递归
        return (numerical_derivative_n_finite(func, x + h, n-1, h) - 
                numerical_derivative_n_finite(func, x - h, n-1, h)) / (2 * h)

# 示例
def f(x):
    return x**3

print(f"f(x) = x³ 在 x=2 处的一阶导数: {numerical_derivative_n_finite(f, 2, 1)}")  # ≈ 12.0
print(f"f(x) = x³ 在 x=2 处的二阶导数: {numerical_derivative_n_finite(f, 2, 2)}")  # ≈ 6.0
print(f"f(x) = x³ 在 x=2 处的三阶导数: {numerical_derivative_n_finite(f, 2, 3)}")  # ≈ 6.0

第三章:积分

(一)不定积分

不定积分的定义: 如果 F'(x) = f(x),则称 F(x) 为 f(x) 的原函数,记作:

∫ f(x) dx = F(x) + C
其中 C 为任意常数。

常用积分公式:

  1. ∫ xⁿ dx = xⁿ⁺¹/(n+1) + C (n ≠ -1)
  2. ∫ 1/x dx = ln|x| + C
  3. ∫ eˣ dx = eˣ + C
  4. ∫ sin x dx = -cos x + C
  5. ∫ cos x dx = sin x + C
  6. ∫ sec² x dx = tan x + C

代码示例(数值积分):

def numerical_integral(func, a, b, n=1000000):
    """数值积分(梯形法则)"""
    h = (b - a) / n
    result = 0.5 * (func(a) + func(b))

    for i in range(1, n):
        result += func(a + i * h)

    return result * h

# 示例
def f1(x):
    return x**2

def f2(x):
    return math.sin(x)

def f3(x):
    return math.exp(x)

print(f"∫₀¹ x² dx ≈ {numerical_integral(f1, 0, 1)}")  # ≈ 0.333...
print(f"∫₀^π sin x dx ≈ {numerical_integral(f2, 0, math.pi)}")  # ≈ 2.0
print(f"∫₀¹ eˣ dx ≈ {numerical_integral(f3, 0, 1)}")  # ≈ 1.718...

(二)定积分

定积分的定义:

∫ₐᵇ f(x) dx = lim(n→∞) Σ(i=1 to n) f(ξᵢ)·Δxᵢ

牛顿-莱布尼茨公式:

∫ₐᵇ f(x) dx = F(b) - F(a)
其中 F(x) 是 f(x) 的原函数。

代码示例(符号积分):

def symbolic_integral(expr, var='x', lower=None, upper=None):
    """符号积分"""
    x = sp.Symbol(var)
    if lower is None or upper is None:
        return sp.integrate(expr, x)
    else:
        return sp.integrate(expr, (x, lower, upper))

# 示例
x = sp.Symbol('x')

expr1 = x**2
expr2 = sp.sin(x)
expr3 = sp.exp(x)

print(f"∫ x² dx = {symbolic_integral(expr1)}")  # x**3/3
print(f"∫ sin x dx = {symbolic_integral(expr2)}")  # -cos(x)
print(f"∫ eˣ dx = {symbolic_integral(expr3)}")  # exp(x)")
print(f"∫₀¹ x² dx = {symbolic_integral(expr1, 'x', 0, 1)}")  # 1/3
print(f"∫₀^π sin x dx = {symbolic_integral(expr2, 'x', 0, sp.pi)}")  # 2

(三)定积分的应用

面积计算:

def area_between_curves(f, g, a, b, n=100000):
    """计算两条曲线之间的面积"""
    def integrand(x):
        return abs(f(x) - g(x))

    return numerical_integral(integrand, a, b, n)

# 示例:计算 y = x² 和 y = √x 在 [0, 1] 之间的面积
def f1(x):
    return x**2

def f2(x):
    return math.sqrt(x)

area = area_between_curves(f1, f2, 0, 1)
print(f"y = x² 和 y = √x 之间的面积 ≈ {area}")  # ≈ 0.333...

第四章:级数

(一)数项级数

级数的定义:

Σ(n=1 to ∞) aₙ = a₁ + a₂ + a₃ + ... + aₙ + ...

级数收敛的判别法:

  1. 比值判别法:
  2. 如果 lim(n→∞) |aₙ₊₁/aₙ| < 1,级数收敛
  3. 如果 lim(n→∞) |aₙ₊₁/aₙ| > 1,级数发散

  4. 根值判别法:

  5. 如果 lim(n→∞) √ⁿ|aₙ| < 1,级数收敛
  6. 如果 lim(n→∞) √ⁿ|aₙ| > 1,级数发散

  7. 积分判别法:

  8. 如果 ∫₁^∞ f(x) dx 收敛,则 Σ(n=1 to ∞) aₙ 收敛

代码示例(判断级数收敛性):

def ratio_test(sequence_func, n_max=1000):
    """比值判别法"""
    try:
        ratio = sequence_func(n_max + 1) / sequence_func(n_max)
        return ratio < 1
    except:
        return None  # 无法判断

def root_test(sequence_func, n_max=1000):
    """根值判别法"""
    try:
        root = abs(sequence_func(n_max)) ** (1/n_max)
        return root < 1
    except:
        return None  # 无法判断

# 示例
def series1(n):
    """Σ 1/n!(收敛)"""
    return 1 / math.factorial(n)

def series2(n):
    """Σ 1/n(发散)"""
    return 1 / n

def series3(n):
    """Σ (1/2)ⁿ(收敛)"""
    return (1/2) ** n

print(f"Σ 1/n! 收敛: {ratio_test(series1)}")  # True
print(f"Σ 1/n 收敛: {ratio_test(series2)}")  # False
print(f"Σ (1/2)ⁿ 收敛: {ratio_test(series3)}")  # True

(二)幂级数

幂级数的定义:

Σ(n=0 to ∞) aₙ(x - x₀)ⁿ = a₀ + a₁(x - x₀) + a₂(x - x₀)² + ...

收敛半径: 使用比值判别法:

R = 1 / lim(n→∞) |aₙ₊₁/aₙ|

代码示例(计算幂级数收敛半径):

def convergence_radius(coeff_func):
    """计算幂级数的收敛半径"""
    # 计算系数比值的极限
    ratios = []
    for n in range(1, 100):
        try:
            ratio = abs(coeff_func(n) / coeff_func(n - 1))
            ratios.append(ratio)
        except:
            break

    if not ratios:
        return float('inf')

    # 计算比值的极限
    limit = ratios[-1]
    if limit == 0:
        return float('inf')
    else:
        return 1 / limit

# 示例
def coeff1(n):
    """Σ xⁿ/n!(收敛半径为 ∞)"""
    return 1 / math.factorial(n)

def coeff2(n):
    """Σ xⁿ/n(收敛半径为 1)"""
    return 1 / n if n > 0 else 1

def coeff3(n):
    """Σ n!xⁿ(收敛半径为 0)"""
    return math.factorial(n)

print(f"Σ xⁿ/n! 的收敛半径: {convergence_radius(coeff1)}")  # ∞
print(f"Σ xⁿ/n 的收敛半径: {convergence_radius(coeff2)}")  # 1.0
print(f"Σ n!xⁿ 的收敛半径: {convergence_radius(coeff3)}")  # 0.0

第五章:多元函数微积分

(一)偏导数

偏导数的定义:

∂f/∂x = lim(Δx→0) [f(x + Δx, y) - f(x, y)] / Δx
∂f/∂y = lim(Δy→0) [f(x, y + Δy) - f(x, y)] / Δy

代码示例(计算偏导数):

def partial_derivative(func, var, point, h=1e-6):
    """计算多元函数的偏导数
    func: 多元函数
    var: 求偏导的变量('x' 或 'y')
    point: 点的坐标,如 (x0, y0)
    """
    x0, y0 = point

    if var == 'x':
        return (func(x0 + h, y0) - func(x0 - h, y0)) / (2 * h)
    elif var == 'y':
        return (func(x0, h) - func(x0 - h)) / (2 * h)
    else:
        raise ValueError("var 必须是 'x' 或 'y'")

# 示例
def f(x, y):
    return x**2 + y**2 + x*y

print(f"∂f/∂x 在 (1, 2) 处: {partial_derivative(f, 'x', (1, 2))}")  # ≈ 4.0
print(f"∂f/∂y 在 (1, 2) 处: {partial_derivative(f, 'y', (1, 2))}")  # ≈ 5.0

(二)二重积分

二重积分的定义:

∬_D f(x, y) dσ = lim(λ→0) Σ(i=1 to n) f(ξᵢ, ηᵢ)·Δσᵢ

代码示例(数值二重积分):

def double_integral(func, x_range, y_range, nx=1000, ny=1000):
    """数值二重积分(矩形区域)"""
    x_min, x_max = x_range
    y_min, y_max = y_range

    hx = (x_max - x_min) / nx
    hy = (y_max - y_min) / ny

    result = 0

    for i in range(nx):
        for j in range(ny):
            x = x_min + (i + 0.5) * hx
            y = y_min + (j + 0.5) * hy
            result += func(x, y) * hx * hy

    return result

# 示例:计算 ∫₀¹∫₀¹ (x² + y²) dx dy
def integrand(x, y):
    return x**2 + y**2

result = double_integral(integrand, (0, 1), (0, 1))
print(f"∫₀¹∫₀¹ (x² + y²) dx dy ≈ {result}")  # ≈ 0.666...

第六章:微分方程

(一)一阶微分方程

可分离变量的微分方程:

dy/dx = f(x)g(y)
解法:
∫ (1/g(y)) dy = ∫ f(x) dx

代码示例(数值解微分方程):

def solve_ode(func, x0, y0, x_end, h=0.01):
    """数值解一阶微分方程(欧拉方法)
    func: dy/dx = f(x, y)
    x0, y0: 初始条件
    x_end: 终止点
    h: 步长
    """
    x = x0
    y = y0
    points = [(x, y)]

    while x < x_end:
        y = y + h * func(x, y)
        x = x + h
        points.append((x, y))

    return points

# 示例:解 dy/dx = x + y,y(0) = 1
def ode_func(x, y):
    return x + y

solution = solve_ode(ode_func, 0, 1, 1, h=0.01)
print(f"解的最终值: y(1) ≈ {solution[-1][1]}")  # ≈ 3.718...

(二)二阶线性微分方程

二阶常系数齐次微分方程:

y'' + ay' + by = 0

特征方程:

r² + ar + b = 0

代码示例(解二阶微分方程):

import numpy as np
from scipy.integrate import odeint

def solve_second_order_ode(a, b, c, x_range, y0, y0_prime, num_points=1000):
    """解二阶常系数线性微分方程
    ay'' + by' + cy = 0
    """
    def system(state, x):
        y, y_prime = state
        y_double_prime = -(b * y_prime + c * y) / a
        return [y_prime, y_double_prime]

    x = np.linspace(x_range[0], x_range[1], num_points)
    initial_state = [y0, y0_prime]
    solution = odeint(system, initial_state, x)

    return x, solution[:, 0]

# 示例:解 y'' - 3y' + 2y = 0,y(0) = 1,y'(0) = 0
x, y = solve_second_order_ode(1, -3, 2, (0, 5), 1, 0)
print(f"解在 x=5 处的值: y(5) ≈ {y[-1]}")

第七章:练习题目

基础练习

  1. 计算数列极限 lim(n→∞) (1 + 1/n)ⁿ
  2. 计算函数极限 lim(x→0) (sin x)/x
  3. 计算函数 f(x) = x² 在 x = 3 处的导数
  4. 计算不定积分 ∫ x² dx
  5. 计算定积分 ∫₀¹ x³ dx

进阶练习

  1. 判断级数 Σ 1/n² 的收敛性
  2. 计算幂级数 Σ xⁿ/n! 的收敛半径
  3. 计算函数 f(x, y) = x²y 在点 (1, 2) 处的偏导数
  4. 计算二重积分 ∫₀¹∫₀¹ (x + y) dx dy
  5. 解微分方程 dy/dx = y,y(0) = 1

竞赛练习

  1. 计算 lim(n→∞) (n! / nⁿ)
  2. 判断级数 Σ (ln n)/n 的收敛性
  3. 解微分方程 y'' + y = 0,y(0) = 1,y'(0) = 0
  4. 计算广义积分 ∫₁^∞ (1/x²) dx
  5. 求函数 f(x) = x³ - 3x² + 2 的极值

恭喜你完成了高等数学基础教程!高等数学是理工科的重要基础,继续深入学习吧!