高等数学教程¶
高等数学是理工科的重要基础课程,包括微积分、线性代数、概率论等内容。本教程将带你学习高等数学的核心概念和方法。
第一章:极限与连续¶
(一)数列极限¶
数列极限的定义: 对于数列 {aₙ},如果存在常数 L,使得对于任意给定的 ε > 0,都存在正整数 N,当 n > N 时,有 |aₙ - L| < ε,则称 L 为数列 {aₙ} 的极限,记作:
常用极限公式:
- lim(n→∞) (1/n) = 0
- lim(n→∞) (1 + 1/n)ⁿ = e
- lim(n→∞) (1 + a/n)ⁿ = eᵃ
- lim(n→∞) n! / nⁿ = 0
- 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→0) (sin x / x) = 1
- lim(x→0) (1 - cos x) / x² = 1/2
- lim(x→∞) (1 + 1/x)ˣ = e
- lim(x→∞) (ln x) / x = 0
- 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₀)
间断点分类:
- 可去间断点:左右极限存在且相等,但不等于函数值
- 跳跃间断点:左右极限存在但不相等
- 无穷间断点:至少一侧极限为无穷大
- 振荡间断点:极限不存在(非无穷大)
代码示例(判断连续性):
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₀ 处的导数定义为:
几何意义: 导数表示函数图像在某点处的切线斜率。
常用导数公式:
- (xⁿ)' = n·xⁿ⁻¹
- (eˣ)' = eˣ
- (aˣ)' = aˣ · ln a
- (ln x)' = 1/x
- (sin x)' = cos x
- (cos x)' = -sin x
- (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
(二)求导法则¶
基本求导法则:
- 常数法则:(C)' = 0
- 和差法则:(u ± v)' = u' ± v'
- 乘积法则:(uv)' = u'v + uv'
- 商法则:(u/v)' = (u'v - uv') / v²
- 链式法则:[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) 的原函数,记作:
其中 C 为任意常数。常用积分公式:
- ∫ xⁿ dx = xⁿ⁺¹/(n+1) + C (n ≠ -1)
- ∫ 1/x dx = ln|x| + C
- ∫ eˣ dx = eˣ + C
- ∫ sin x dx = -cos x + C
- ∫ cos x dx = sin x + C
- ∫ 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) 是 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...
第四章:级数¶
(一)数项级数¶
级数的定义:
级数收敛的判别法:
- 比值判别法:
- 如果 lim(n→∞) |aₙ₊₁/aₙ| < 1,级数收敛
-
如果 lim(n→∞) |aₙ₊₁/aₙ| > 1,级数发散
-
根值判别法:
- 如果 lim(n→∞) √ⁿ|aₙ| < 1,级数收敛
-
如果 lim(n→∞) √ⁿ|aₙ| > 1,级数发散
-
积分判别法:
- 如果 ∫₁^∞ 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
(二)幂级数¶
幂级数的定义:
收敛半径: 使用比值判别法:
代码示例(计算幂级数收敛半径):
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
第五章:多元函数微积分¶
(一)偏导数¶
偏导数的定义:
代码示例(计算偏导数):
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
(二)二重积分¶
二重积分的定义:
代码示例(数值二重积分):
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...
第六章:微分方程¶
(一)一阶微分方程¶
可分离变量的微分方程:
解法:代码示例(数值解微分方程):
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...
(二)二阶线性微分方程¶
二阶常系数齐次微分方程:
特征方程:
代码示例(解二阶微分方程):
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]}")
第七章:练习题目¶
基础练习¶
- 计算数列极限 lim(n→∞) (1 + 1/n)ⁿ
- 计算函数极限 lim(x→0) (sin x)/x
- 计算函数 f(x) = x² 在 x = 3 处的导数
- 计算不定积分 ∫ x² dx
- 计算定积分 ∫₀¹ x³ dx
进阶练习¶
- 判断级数 Σ 1/n² 的收敛性
- 计算幂级数 Σ xⁿ/n! 的收敛半径
- 计算函数 f(x, y) = x²y 在点 (1, 2) 处的偏导数
- 计算二重积分 ∫₀¹∫₀¹ (x + y) dx dy
- 解微分方程 dy/dx = y,y(0) = 1
竞赛练习¶
- 计算 lim(n→∞) (n! / nⁿ)
- 判断级数 Σ (ln n)/n 的收敛性
- 解微分方程 y'' + y = 0,y(0) = 1,y'(0) = 0
- 计算广义积分 ∫₁^∞ (1/x²) dx
- 求函数 f(x) = x³ - 3x² + 2 的极值
恭喜你完成了高等数学基础教程!高等数学是理工科的重要基础,继续深入学习吧!