给定数列 {un},称 ∑n=1∞un=u1+u2+⋯ 为常数项级数。部分和 Sn=∑k=1nuk,若 limn→∞Sn=S 存在,则称级数收敛,和为 S;否则发散。
收敛的必要条件:若 ∑un 收敛,则 limn→∞un=0。注意反之不成立(如调和级数)。
基本性质:
- 级数去掉或添加有限项不改变收敛性
- 若 ∑un=S,则 ∑kun=kS
- 若 ∑un、∑vn 均收敛,则 ∑(un±vn) 收敛且和为对应和之加减
当 un≥0 时,∑un 为正项级数,其部分和序列单调递增,故收敛 ⇔ 部分和有上界。
比较判别法:设 0≤un≤vn,若 ∑vn 收敛则 ∑un 收敛;若 ∑un 发散则 ∑vn 发散。
比较判别法的极限形式:设 un>0,vn>0,若 limn→∞vnun=l:
- 0<l<+∞:两级数同敛散
- l=0:∑vn 收敛 ⇒ ∑un 收敛
- l=+∞:∑vn 发散 ⇒ ∑un 发散
比值判别法(D’Alembert):设 un>0,若 limn→∞unun+1=ρ:
- ρ<1:收敛
- ρ>1:发散
- ρ=1:不确定
根值判别法(Cauchy):设 un≥0,若 limn→∞nun=ρ:
- ρ<1:收敛
- ρ>1:发散
- ρ=1:不确定
积分判别法:设 f(x) 在 [1,+∞) 上非负单调递减,则 ∑n=1∞f(n) 与 ∫1+∞f(x)dx 同敛散。
判别法选择策略:含阶乘用比值法,含 n 次幂用根值法,能与 p-级数比较时用比较法,通项可积时用积分法。
莱布尼茨判别法:若交错级数 ∑n=1∞(−1)n−1un(un>0)满足:
- un+1≤un(单调递减)
- limn→∞un=0
则级数收敛,且余项 ∣rn∣≤un+1。
- 绝对收敛:∑∣un∣ 收敛 ⇒ ∑un 收敛
- 条件收敛:∑un 收敛但 ∑∣un∣ 发散
绝对收敛级数具有可交换性(任意重排后和不变),条件收敛级数不具有此性质(Riemann 重排定理)。
形如 ∑n=0∞anxn 的级数称为幂级数。若
R=limn→∞an+1an或R=limn→∞n∣an∣1
存在,则 R 为收敛半径。级数在 ∣x∣<R 时绝对收敛,∣x∣>R 时发散,x=±R 处需单独判断。
收敛域:开区间 (−R,R) 加上端点收敛情况的并集。
对于 ∑an(x−x0)n,收敛区间为 (x0−R,x0+R)。
逐项求导:在收敛区间内,
(∑n=0∞anxn)′=∑n=1∞nanxn−1
逐项积分:在收敛区间内,
∫0x(∑n=0∞antn)dt=∑n=0∞n+1anxn+1
逐项求导和积分后收敛半径不变,但端点收敛性可能改变。
Taylor 级数:若 f(x) 在 x0 处无穷可微,则
f(x)=∑n=0∞n!f(n)(x0)(x−x0)n
常用展开式(x0=0,即 Maclaurin 级数):
ex=∑n=0∞n!xn,x∈(−∞,+∞)
sinx=∑n=0∞(2n+1)!(−1)nx2n+1,x∈(−∞,+∞)
cosx=∑n=0∞(2n)!(−1)nx2n,x∈(−∞,+∞)
ln(1+x)=∑n=1∞n(−1)n−1xn,x∈(−1,1]
(1+x)α=∑n=0∞(nα)xn,x∈(−1,1)
1−x1=∑n=0∞xn,x∈(−1,1)
间接展开法:利用已知展开式通过变量代换、逐项求导、逐项积分等得到新展开式,避免直接计算高阶导数。
利用已知的和函数(如 ∑xn=1−x1),通过逐项求导或积分求未知级数的和。
典型方法:设 S(x)=∑anxn,对 S(x) 求导或积分化为已知和函数,再逆运算得到 S(x)。
设 f(x) 以 2π 为周期,若满足 Dirichlet 条件:
- 在一个周期内连续或只有有限个第一类间断点
- 在一个周期内只有有限个极值点
则 f(x) 的傅里叶级数收敛,且在连续点 x 处收敛于 f(x),在间断点 x 处收敛于 2f(x−)+f(x+)。
以 2π 为周期的函数 f(x) 的傅里叶系数:
a0=π1∫−ππf(x)dx
an=π1∫−ππf(x)cosnxdx,n=1,2,…
bn=π1∫−ππf(x)sinnxdx,n=1,2,…
傅里叶级数为:
f(x)∼2a0+∑n=1∞(ancosnx+bnsinnx)
周期延拓:对定义在 [0,π] 或 [−π,π] 上的非周期函数,将其延拓为 2π 周期函数后展开。
偶延拓(余弦级数):将 f(x) 延拓为偶函数,则 bn=0,
f(x)∼2a0+∑n=1∞ancosnx
奇延拓(正弦级数):将 f(x) 延拓为奇函数,则 an=0,
f(x)∼∑n=1∞bnsinnx
设 f(x) 以 2l 为周期,令 x=πlt 化为 2π 周期:
an=l1∫−llf(x)coslnπxdx
bn=l1∫−llf(x)sinlnπxdx
f(x)∼2a0+∑n=1∞(ancoslnπx+bnsinlnπx)
形如 dxdy=f(x)g(y) 的方程,分离变量后积分:
∫g(y)dy=∫f(x)dx+C
例:dxdy=yx,分离得 ydy=xdx,积分得 2y2=2x2+C,即 y2−x2=C。
形如 dxdy=φ(xy) 的方程,令 u=xy,则 y=ux,dxdy=u+xdxdu,代入得:
u+xdxdu=φ(u)⟹φ(u)−udu=xdx
化为可分离变量方程求解。
形如 dxdy+P(x)y=Q(x) 的方程。
常数变易法:先解齐次方程 dxdy+P(x)y=0,得 y=Ce−∫P(x)dx,再将 C 换为 u(x) 代入原方程确定 u(x)。
通解公式:
y=e−∫P(x)dx[∫Q(x)e∫P(x)dxdx+C]
形如 dxdy+P(x)y=Q(x)yn(n=0,1)的方程。
令 z=y1−n,则 dxdz=(1−n)y−ndxdy,代入化为一阶线性方程:
dxdz+(1−n)P(x)z=(1−n)Q(x)
直接积分两次:y′=∫f(x)dx+C1,y=∫y′dx+C2。
令 p=y′,则 y′′=p′,方程降为一阶方程 p′=f(x,p),解出 p 后再积分得 y。
令 p=y′,则 y′′=dxdp=dydp⋅dxdy=pdydp,方程降为 pdydp=f(y,p),解出 p=p(y) 后再分离变量求 y。
特征方程 r2+pr+q=0,设根为 r1,r2:
| 根的情况 | 通解 |
|---|
| r1=r2(实根) | y=C1er1x+C2er2x |
| r1=r2(重根) | y=(C1+C2x)er1x |
| r1,2=α±βi(共轭复根) | y=eαx(C1cosβx+C2sinβx) |
通解 = 齐次通解 + 非齐次特解。特解用待定系数法:
f(x)=Pm(x)eλx 型:
设特解 y∗=xkQm(x)eλx,其中 k 为 λ 是特征方程根的重数(0/1/2),Qm(x) 为 m 次多项式。
f(x)=eλx[Pl(x)cosωx+Pn(x)sinωx] 型:
设特解 y∗=xkeλx[Rm(1)(x)cosωx+Rm(2)(x)sinωx],其中 m=max(l,n),k 为 λ+iω 是特征方程根的重数(0 或 1)。
形如 xny(n)+a1xn−1y(n−1)+⋯+an−1xy′+any=f(x) 的方程称为欧拉方程。
变量代换:令 x=et(即 t=lnx),则:
xdxdy=dtdy,x2dx2d2y=dt2d2y−dtdy
更一般地,引入算子 D=dtd,有 xkdxkdky=D(D−1)(D−2)⋯(D−k+1)y。
代入后化为常系数线性方程求解,再代回 x=et。
二阶欧拉方程 x2y′′+axy′+by=f(x):
令 x=et,化为 dt2d2y+(a−1)dtdy+by=f(et),用常系数方法求解。
求 ∑n=1∞2nn 的和。
设 S(x)=∑n=1∞nxn,则 S(x)=x∑n=1∞nxn−1=x⋅dxd(∑n=0∞xn)=x⋅dxd1−x1=(1−x)2x
代入 x=21:S=(1/2)21/2=2。
import numpy as np
import matplotlib.pyplot as plt
# 方波信号的傅里叶级数逼近
def square_wave_fourier(x, N):
"""N 阶傅里叶级数逼近方波"""
result = np.zeros_like(x)
for k in range(1, N + 1):
n = 2 * k - 1 # 仅奇数项
result += (4 / (n * np.pi)) * np.sin(n * x)
return result
x = np.linspace(-2 * np.pi, 2 * np.pi, 1000)
y_exact = np.sign(np.sin(x)) # 方波
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
for ax, N in zip(axes.flat, [1, 5, 21, 101]):
y_approx = square_wave_fourier(x, N)
ax.plot(x, y_exact, 'k--', alpha=0.5, label='方波')
ax.plot(x, y_approx, 'b-', label=f'N={N}阶')
ax.set_title(f'傅里叶级数逼近 (N={N})')
ax.legend()
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('fourier_approx.png', dpi=150)
plt.show()
from scipy.integrate import solve_ivp
import numpy as np
import matplotlib.pyplot as plt
# 二阶常系数线性方程: y'' + 2y' + 5y = 0
# 令 y1 = y, y2 = y', 则 y1' = y2, y2' = -2y2 - 5y1
def ode_system(t, Y):
y1, y2 = Y
return [y2, -2 * y2 - 5 * y1]
# 特征方程 r^2 + 2r + 5 = 0, r = -1 ± 2i
# 解析解: y = e^{-t}(C1*cos(2t) + C2*sin(2t))
sol = solve_ivp(ode_system, [0, 10], [1, 0], dense_output=True)
t = np.linspace(0, 10, 500)
y_numerical = sol.sol(t)[0]
y_analytical = np.exp(-t) * np.cos(2 * t) # C1=1, C2=0
plt.figure(figsize=(10, 5))
plt.plot(t, y_numerical, 'b-', label='数值解')
plt.plot(t, y_analytical, 'r--', label='解析解')
plt.xlabel('t')
plt.ylabel('y')
plt.title("y'' + 2y' + 5y = 0 的解")
plt.legend()
plt.grid(True, alpha=0.3)
plt.savefig('ode_solution.png', dpi=150)
plt.show()
from sympy import symbols, Function, dsolve, Eq
x = symbols('x')
y = Function('y')
# 欧拉方程: x^2*y'' + xy' - y = x^2
ode = Eq(x**2 * y(x).diff(x, 2) + x * y(x).diff(x) - y(x), x**2)
sol = dsolve(ode, y(x))
print("欧拉方程的解:", sol)
# 输出: y(x) = C1*x + C2/x + x**2/3
| 主题 | 核心方法 | 关键公式/定理 |
| ------------- | --------------------------- | ----------------------------- | ----------- | --- |
| 正项级数 | 比较法/比值法/根值法/积分法 | 极限形式比较、D’Alembert 判别 |
| 交错级数 | 莱布尼茨判别法 | 单调递减 + 趋于零 |
| 绝对/条件收敛 | 绝对收敛级数可重排 | Riemann 重排定理 |
| 幂级数 | 收敛半径/间接展开 | R=lim∣a∗n/a∗n+1∣ |
| 傅里叶级数 | 系数公式/奇偶延拓 | Dirichlet 收敛定理 |
| 一阶 ODE | 分离变量/齐次代换/常数变易 | 线性方程通解公式 |
| 可降阶二阶 | p=y′ 代换 | 视缺失变量选代换 |
| 二阶常系数 | 特征方程/待定系数法 | 根的三种情况 |
| 欧拉方程 | x=et 代换 | 化为常系数方程 |