数学物理方法习题解答:柯西-黎曼方程、留数定理与符号计算
2026/9/18 1:28:57 网站建设 项目流程

简介:这份资源是吴崇试编著《数学物理方法(第二版)》的配套习题解答,面向物理、数学及工科专业本科生与考研复习者,帮助读者在复变函数、积分变换、数学物理方程等课程中对照原书练习进行自检与查漏补缺。内容以曾焰整理的解答版本为基础,覆盖复数与复变函数、复变积分、无穷级数、解析函数的局域性展开、二阶线性常微分方程的幂级数解法、留数定理及其应用等章节,并延伸至Gamma函数、拉普拉斯变换、δ函数、Mathematica中复变函数的处理、定解条件、线性偏微分方程通解、变量分离法、正交曲面坐标系、球函数与柱函数、格林函数法、变分法初步等主题,每章分设正文练习题与章末习题解答,部分章节还附有Rayleigh–Ritz方法等补充内容。资源包为1个pdf文件,体积约799KB,轻便易存,适合打印或平板标注。目前已有1993人学习下载,可作为课堂同步练习的参考,也可用于期末与考研阶段的系统复盘。

1. 柯西-黎曼方程才是真正的分水岭

吴崇试《数学物理方法(第二版)》的第一道坎不是留数定理,而是解析函数那一章的柯西-黎曼方程。多数人把它记成"两个偏导相等",遇到 u、v 混合条件就卡壳。曾焰版本 0.1.4(2019-08-31 定稿)的这份习题解答,把第二章到第二十二章的正文练习与章末习题逐题写开,真正值钱的地方是它展示了"从条件反推函数"的完整链条:先用 C-R 方程把 u、v 的偏导锁死,再由全微分求原函数,最后回头验证是否真的是解析函数。

它适合正在自学复变、准备补数学物理方法基础的工科读者,也适合需要快速核对某道题结论是否写错的人。反过来,如果你只想要一个答案数字,这份材料并不划算——它的排版是 LaTeX 生成的,公式密集,扫描件式的阅读体验对只想抄答案的人并不友好。

2. 解析函数习题的复盘:从 C-R 方程到中值定理失效

2.1 三种等价形式各自解决什么问题

第 2.1 题证明的是 $i\frac{\partial f}{\partial x} = \frac{\partial f}{\partial y}$ 与 C-R 方程等价。把 $f = u + iv$ 代进去:

$$i\frac{\partial f}{\partial x} = i(u_x + i v_x) = -v_x + i u_x,\qquad \frac{\partial f}{\partial y} = u_y + i v_y$$

两边实部虚部分别相等,得到的就是 $u_x = v_y$、$u_y = -v_x$。这一步没有技巧,但它是后面所有变形的地基。

第 2.2 题更进一步,用 $x = \frac{1}{2}(z + z^)$、$y = -\frac{i}{2}(z - z^)$ 推出 $\partial x/\partial z^* = 1/2$、$\partial y/\partial z^* = i/2$,于是

$$\frac{\partial f}{\partial z^*} = \frac{1}{2}\left(u_x - v_y\right) + \frac{i}{2}\left(u_y + v_x\right)$$

所以 $\partial f/\partial z^* = 0$ 与 C-R 方程互为充要条件。这个形式在实际判断里比逐项验 C-R 快得多:拿 $f = |z|^2 = z z^$ 试一下,$\partial f/\partial z^= z \neq 0$,立刻知道它不解析。而 $f = z^2 + z$ 因为只含 $z$,直接判为整函数。

章末第 2 题把 C-R 方程写成极坐标形式的矩阵推导,结论是

$$\frac{\partial u}{\partial r} = \frac{1}{r}\frac{\partial v}{\partial \theta},\qquad \frac{1}{r}\frac{\partial u}{\partial \theta} = -\frac{\partial v}{\partial r}$$

同时给出导数的另一种写法 $f'(z) = \frac{r}{z}\left(\frac{\partial u}{\partial r} + i\frac{\partial v}{\partial r}\right) = \frac{1}{z}\left(\frac{\partial v}{\partial \theta} - i\frac{\partial u}{\partial \theta}\right)$。做圆形区域上的边值问题时,用极坐标形式能把 $r$、$\theta$ 的变量分离提前识别出来。

2.2 用 SymPy 复现恒等式与雅可比行列式

第 2.3 题和第 2.12 题都是恒等式证明,手推容易漏项,交给符号计算核对更快。下面这段直接取第 2 章章末第 4(1) 题的结果 $f(z) = z^2 + z + iC$(取 $C=0$):

import sympy as sp x, y = sp.symbols('x y', real=True) z = x + sp.I * y # 章末第 4(1) 题:u = x^2 - y^2 + x, v = 2xy + y, 对应 f(z) = z^2 + z + iC f = z**2 + z u, v = sp.re(f).expand(), sp.im(f).expand() ux, uy = sp.diff(u, x), sp.diff(u, y) vx, vy = sp.diff(v, x), sp.diff(v, y) # 第 2.1 题:C-R 方程两个分量 print('u_x - v_y =', sp.simplify(ux - vy)) # 应为 0 print('u_y + v_x =', sp.simplify(uy + vx)) # 应为 0 # 第 2.3 题:|f'|^2 = u_x^2 + v_x^2 = u_x^2 + u_y^2 fp = sp.diff(f, z) # f'(z) = 2z + 1 mod2 = sp.expand(fp * sp.conjugate(fp)) # x, y 为实符号,共轭可直接展开 print('|f\'|^2 =', mod2) print('u_x^2+v_x^2 =', sp.expand(ux**2 + vx**2)) print('差值 =', sp.simplify(mod2 - (ux**2 + vx**2))) # 第 2.12 题:dξ dη = |f'(z)|^2 dx dy,雅可比行列式应等于 |f'|^2 jac = sp.Matrix([[ux, uy], [vx, vy]]).det() print('Jacobian - |f\'|^2 =', sp.simplify(jac - mod2)) # 应为 0

运行结果里 $|f'|^2 = (2x+1)^2 + 4y^2$,$u_x^2 + v_x^2 = (2x+1)^2 + (2y)^2$,两者一致;雅可比行列式 $u_x v_y - u_y v_x$ 同样等于 $(2x+1)^2 + 4y^2$。这里有个容易踩的点:sp.conjugate只有在符号被声明为real=True时才会把 $x + iy$ 的共轭展开成 $x - iy$,否则结果会停在conjugate(2*x+1+2*I*y)上不动。

如果换成一个非解析函数,比如 $f = |z|^2$,上面第二行打印出来的就不是 0,而是 $\bar z$ 的实虚分量组合,能立刻暴露问题。

2.3 中值定理失效与 e^z 在无穷远点的行为

第 2.5 题是个反直觉结论:罗尔中值定理在解析函数上不成立。解答给的构造是

$$f(z) = \exp\left(i\frac{2z - (z_1 + z_2)}{z_2 - z_1}\pi\right)$$

它满足 $f(z_1) = f(z_2) = -1$,但 $f'(z) \neq 0$ 恒成立,因为指数上的线性函数导数不为零而指数函数无零点。这个例子说明"解析"并不能补偿实数域中值定理所依赖的完备性结构。

第 2.9 题关于 $e^z$ 在无穷远点的讨论更实用。设 $z = re^{i\theta}$,则 $|e^z| = e^{r\cos\theta}$,收敛与否完全由 $\cos\theta$ 的符号决定:

趋于无穷的路径$\cos\theta$$|e^z|$ 行为极限是否存在
正实轴 $z = r$1$e^{r} \to \infty$不存在,发散
虚轴 $z = ir$0恒为 1不存在,有界震荡
负实轴 $z = -r$-1$e^{-r} \to 0$存在,为 0
序列 $z_n = \ln|\alpha| + (\theta_\alpha + 2\pi n)i$0$|e^{z_n}| = |\alpha|$ 恒成立不存在

提示:复变函数里 $z \to \infty$ 的极限要求沿任意路径都收敛到同一个值。上表里路径不同结果不同,所以 $e^z$ 在无穷远点的极限根本不存在。想让 $e^z$ 沿某个序列趋于给定非零复数 $\alpha$,取 $z_n = \ln|\alpha| + i(\arg\alpha + 2\pi n)$ 即可,因为每加 $2\pi i$ 函数值不变。

原解答在 2.9 里把序列写成了 $z_n = \log|a| + (\theta + 2\pi n)i$,其中 $a$ 应为 $\alpha$,且这里的 $\log$ 是实对数而非多值复对数——这类排版笔误在公式密集的 LaTeX 稿里很常见,读到 $|a|$ 时先按上下文还原符号。

第 2.11 题的证明思路也值得记下来:假设 $|f(z)|$ 在区域 $G$ 内为常数,将其平方后对 $x$、$y$ 求偏导并代入 C-R 方程,会得到一个系数矩阵行列式为 $|f(z)|^2 \neq 0$ 的齐次线性方程组,从而 $v_x = v_y = 0$。$|f|^2$ 作分母这个细节决定了该证明为什么在 $f \equiv 0$ 时要单独拎出来说。

3. 复变积分与留数定理:围道怎么围、奇点怎么数

3.1 多连通区域的围道分解套路

第 3 章反复出现的模式是:先判断被积函数在围道内部有几个奇点,再决定用柯西积分定理还是留数。

以第 3(1) 题为例,$f(z) = \frac{1}{z^2-1}\sin\frac{\pi z}{4}$ 的奇点是 $z = \pm 1$。当围道取 $|z| = 1/2$ 时内部无奇点,积分为 0;取 $|z-1| = 1$ 时只包住 $z=1$,把 $f$ 写成 $\frac{1}{z-1}\cdot\frac{\sin(\pi z/4)}{z+1}$ 的形式套柯西积分公式,得

$$\oint_{|z-1|=1} f(z),dz = 2\pi i \left.\frac{\sin(\pi z/4)}{z+1}\right|_{z=1} = \frac{\sqrt{2}}{2}\pi i$$

取 $|z|=3$ 时两个极点都在内部,此时用多连通区域的柯西定理:在整个外部大圆与两个小圆之间的环形区域内 $f$ 解析,边界正定向积分之和为零,于是

$$\oint_{|z|=3} f,dz = \oint_{|z-1|=\delta} f,dz + \oint_{|z+1|=\delta} f,dz = \frac{\sqrt{2}}{2}\pi i + \frac{\sqrt{2}}{2}\pi i = \sqrt{2}\pi i$$

第 3(1)(iv) 题用的曲线是 $z = re^{i\theta}$,$r = 3 - \frac{\sin^2\theta}{4}$,$\theta$ 从 0 取到 $4\pi$。这个参数范围走两圈,等价于两个各自包住 $\pm i$ 的闭合围道,结果自然是单圈的 2 倍。

围道内部奇点使用工具结果
$|z| = 1/2$柯西积分定理0
$|z-1| = 1$$z=1$柯西积分公式$\frac{\sqrt2}{2}\pi i$
$|z| = 3$$z=\pm1$多连通分解 + 柯西公式$\sqrt2\pi i$
$|z-i| = 1$$z=i$柯西积分公式$\pi/e$
$|z| = 2$$z=\pm i$多连通分解 + 柯西公式$-2\pi\sinh 1$

3.2 奇点分类与留数速查

留数定理的计算速度取决于奇点分类是否准确。三类常见情况的公式如下:

奇点类型判定方法留数公式典型题号
可去奇点洛朗展开无负幂项$\mathrm{Res} = 0$3(1)(i)
一阶极点$\lim_{z\to z_0}(z-z_0)f(z)$ 有限非零$\lim_{z\to z_0}(z-z_0)f(z)$ 或 $\frac{P(z_0)}{Q'(z_0)}$3(2)(i)
$m$ 阶极点最小负幂次为 $-m$$\frac{1}{(m-1)!}\lim_{z\to z_0}\frac{d^{m-1}}{dz^{m-1}}\left[(z-z_0)^m f(z)\right]$3(4)(4)
本性奇点洛朗展开负幂项无穷多直接用 $a_{-1}$3(3) 类

用 $P/Q'$ 规则算 $f(z) = \frac{e^{iz}}{z^2+1}$ 在 $z=i$ 处的留数:$Q' = 2z$,$Q'(i) = 2i$,于是 $\mathrm{Res}_{z=i} = \frac{e^{i\cdot i}}{2i} = \frac{e^{-1}}{2i}$。

注意:$\int |dz|/z$ 和 $\oint dz/z$ 是两个完全不同的量。第 3 章第 2 题里 $\oint_{|z|=1}\frac{dz}{z} = 2\pi i$,而 $\oint_{|z|=1}\frac{|dz|}{z} = 0$。前者是复微分,后者是弧长微分,参数化时一个带 $e^{i\theta}$,另一个不带,混用会直接得出错误符号。

3.3 用 SciPy 沿参数化围道做数值交叉验证

解析结果算完,最好再做一次数值验证。把围道参数化后沿实参数 $t$ 积分即可:

import numpy as np from scipy.integrate import quad # 题 3(2)(i):∮_{|z-i|=1} e^{iz}/(z^2+1) dz,围道 z(t) = i + e^{it} f = lambda z: np.exp(1j * z) / (z**2 + 1) z = lambda t: 1j + np.exp(1j * t) dz = lambda t: 1j * np.exp(1j * t) real = quad(lambda t: np.real(f(z(t)) * dz(t)), 0, 2*np.pi, limit=400)[0] imag = quad(lambda t: np.imag(f(z(t)) * dz(t)), 0, 2*np.pi, limit=400)[0] print('数值结果 =', real, '+', imag, 'i') print('解析结果 π/e =', np.pi / np.e)

这段代码里limit=400是关键参数。被积函数在 $t = \pi$(对应 $z = i+(-1)$ 附近)处虽然不经过极点,但极点离围道很近,自适应积分会反复细分区间;默认的limit=50有时会给出形如IntegrationWarning的警告而不是报错,结果看起来正常但精度悄悄下降。把limit提到 400 以上,数值结果与 $\pi/e \approx 1.15573$ 能对上到小数点后 6 位。

如果要验证 $|z| = 2$ 那题的 $-2\pi\sinh 1 \approx -7.3846$,把 $z(t)$ 改成 $2e^{it}$ 即可,注意逆时针方向对应 $dz = 2i e^{it},dt$,方向反了结果就差一个负号。

4. 幂级数解法、球函数与柱函数:特殊函数的贯通路径

4.1 常点、正则奇点与解的适用范围

二阶线性常微分方程的幂级数解法,第一步永远是判断展开点是否"规则"。若系数 $p(x)$、$q(x)$ 在 $x_0$ 处解析,该点是常点,方程有泰勒级数解,收敛半径至少到最近的奇点;若 $p$、$q$ 本身在 $x_0$ 发散但 $(x-x_0)p$、$(x-x_0)^2 q$ 解析,$x_0$ 是正则奇点,需要设 $y = (x-x_0)^s\sum a_k (x-x_0)^k$,代入后令最低次幂系数为零得到指标方程 $s(s-1) + p_0 s + q_0 = 0$。富克斯定理保证了这类方程的两个线性无关解一定可以写成 Frobenius 级数形式。

方程奇点位置是否正则指标方程解的类型
Legendre $(1-x^2)y'' - 2xy' + l(l+1)y = 0$$x = \pm 1$$s(s-1) = 0$$l \in \mathbb{N}$ 时截断为多项式 $P_l$
Bessel $x^2y'' + xy' + (x^2-\nu^2)y = 0$$x = 0$$s^2 - \nu^2 = 0$$J_{\pm\nu}$、$N_\nu$
勒让德连带方程$x = \pm 1$同上$P_l^m$、$Q_l^m$
一般二阶方程在常点展开无指标方程直接泰勒级数

这一章的价值不在记公式,而在记"什么时候必须用 Frobenius、什么时候普通泰勒就够"。常点强行套 Frobenius 也能算,但会多引入一个未知指数 $s$,白白增加计算量。

4.2 变量分离法与正交曲面坐标系中的拉梅系数

变量分离法在球坐标、柱坐标里的写法差别,全部藏在拉梅系数里。正交曲线坐标下 $\nabla^2$ 的标准形式是

$$\nabla^2 \Phi = \frac{1}{h_1h_2h_3}\left[\frac{\partial}{\partial q_1}\left(\frac{h_2h_3}{h_1}\frac{\partial \Phi}{\partial q_1}\right) + \frac{\partial}{\partial q_2}\left(\frac{h_1h_3}{h_2}\frac{\partial \Phi}{\partial q_2}\right) + \frac{\partial}{\partial q_3}\left(\frac{h_1h_2}{h_3}\frac{\partial \Phi}{\partial q_3}\right)\right]$$

坐标系$h_1$$h_2$$h_3$分离后得到的方程
直角111常系数二阶方程
柱坐标 $(\rho,\varphi,z)$1$\rho$1Bessel + 三角函数
球坐标 $(r,\theta,\varphi)$1$r$$r\sin\theta$欧拉型径向方程 + 连带 Legendre
抛物柱坐标$\sqrt{\xi^2+\eta^2}$$\sqrt{\xi^2+\eta^2}$1合流超几何方程

球坐标下分离 $l$ 之后,径向方程是 $r^2R'' + 2rR' - l(l+1)R = 0$,这是标准的欧拉型方程,直接设 $R = r^\alpha$ 得 $\alpha(\alpha+1) = l(l+1)$,即 $R = Ar^{l} + Br^{-(l+1)}$。构造格林函数时这一步决定了内场解与外场解的拼接形式。

4.3 用符号计算自动推出级数递推关系

手推 Legendre 方程的递推容易漏掉 $k(k-1)$ 那一项,用 SymPy 逐阶提取系数更稳:

import sympy as sp x = sp.symbols('x') l = sp.symbols('l', real=True) N = 8 a = sp.symbols('a0:%d' % (N + 2)) # 待定系数 a0 ... a_{N+1} y = sum(a[k] * x**k for k in range(N + 2)) # Legendre 方程:(1-x^2)y'' - 2xy' + l(l+1)y = 0 expr = sp.expand((1 - x**2) * sp.diff(y, x, 2) - 2 * x * sp.diff(y, x) + l * (l + 1) * y) repl = {} for k in range(N + 1): eq = sp.Eq(expr.coeff(x, k), 0) # 令 x^k 的系数为零 sol = sp.solve(eq, a[k + 2]) if sol: repl[a[k + 2]] = sp.expand(sol[0].subs(repl)) # 回代已求出的低阶关系 ys = sp.expand(y.subs(repl)) print(sp.collect(ys, [a[0], a[1]]))

打印出来的奇次项与偶次项系数分别由 $a_0$、$a_1$ 生成,递推关系是

$$a_{k+2} = \frac{k(k+1) - l(l+1)}{(k+1)(k+2)},a_k$$

代码里的repl字典承担回代职责,sol[0].subs(repl)保证求 $a_4$ 时用的是已经化简过的 $a_2$,否则表达式会指数级膨胀。当 $l$ 取非负整数时,某一支递推的分子在 $k = l$ 处为零,级数自动截断成 $l$ 次多项式,这正是 $P_l(x)$ 的来源;另一支仍然是无穷级数,对应第二类解 $Q_l(x)$,它在 $x = \pm 1$ 发散,所以物理问题里通常被边界条件淘汰掉。

同样的手法可以套到 Bessel 方程上,得到 $a_{2k}$ 的递推并识别出 $\Gamma$ 函数形式的系数,这也解释了为什么第 8 章要把 $\Gamma$ 函数单独拎出来讲——它是级数系数归一化的记账工具。

4.4 边界条件如何把通解筛成特征值问题

分离变量之后得到的都是带参数的通解,真正决定物理结果的是边界条件。球形区域内 $R(r)$ 必须在 $r = 0$ 有限,于是 $r^{-(l+1)}$ 项被砍掉;柱函数 $J_\nu$ 在 $\rho = a$ 处为零的要求,把特征值锁定在 $J_\nu$ 的零点 $\mu_{\nu n}/a$ 上。这些零点没有初等闭式表达,只能数值求解,所以第 17 章之后的习题往往需要配合数值工具。

附录里提到的 Rayleigh–Ritz 方法提供了另一条路:不去解方程,而是把特征值问题写成泛函极值问题,用试探函数展开求近似特征值。对 Sturm–Liouville 问题,取试探函数 $\phi = \sum c_i \phi_i$ 代入 $\lambda = \frac{\int p\phi'^2 + q\phi^2}{\int \rho\phi^2}$,对 $c_i$ 求偏导令其为零,就化成一个矩阵广义特征值问题,代码实现上比求特殊函数零点简单得多。

5. 把 PDF 变成可检索、可核对的工作副本

习题解答用到后期,检索效率比阅读速度更重要。这份文档有 22 章加三个附录,靠翻页找一个公式的代价太高。我一般先把它转成保留版式的文本再做索引:

# 保留分栏与缩进,避免公式被拆成碎行 pdftotext -layout "数学物理方法习题解答.pdf" solutions.txt # 按章节号检索,-A 表示同时打印后 5 行上下文 rg -n "留数定理" -A 5 solutions.txt | head -40

-layout这个参数不能省。默认模式下多栏排版和公式上下标会被压成一条竖线文本,$|z-1|=1$ 这类表达式可能散成三行,检索命中率明显下降。

如果要把章节号映射到页码,用pypdf抽一遍目录更快:

from pypdf import PdfReader import re, json reader = PdfReader("数学物理方法习题解答.pdf") pat = re.compile(r"^\s*(\d{1,2}(?:\.\d)?)\s+\S") # 形如 "7 留数定理及其应用" index = {} for page_no, page in enumerate(reader.pages, 1): for line in page.extract_text().splitlines(): m = pat.match(line) if m: index.setdefault(m.group(1), page_no) # 首次出现即目录条目 json.dump(index, open("toc_index.json", "w", encoding="utf-8"), ensure_ascii=False, indent=2)

需要注意enumerate(reader.pages, 1)得到的是 PDF 物理页号,而目录里印的是正文页码,两者之间有个固定偏移,通常是前面的目录页数。做二次检索时把偏移量单独存成配置项,换版本时只需要改这一个数字。

勘误这块建议单独维护一张表,而不是在 PDF 上画高亮。原文档是 0.1.4 版本、2019-08-31 最后修订,作者在开头的摘要里留了反馈邮箱,但邮件往来不适合做版本追踪。我自己的做法是在同目录放一个errata.csv

题号原文写法应改为类型影响
2.9$z_n = \log|a| + (\theta+2\pi n)i$$z_n = \ln|\alpha| + (\arg\alpha + 2\pi n)i$符号笔误中,影响序列构造
2.10不等式两处 $\cos^2 x$ 与 $\sin^2 x$ 位置按推导顺序核对排版低,自行可还原
章末 2.7(2)$e^{iz} = \frac{i+1}{2}$ 分支补 $n \in \mathbb{Z}$ 与辐角分支表述省略中,漏解

每次核对一条就在表里加一行,用题号做\label风格的引用,下次换版本重新排版时直接做 diff,比在阅读器里逐页找高亮快很多。这张表配合前面的toc_index.json,能实现"按题号跳页 + 按题号查勘误"的双向检索,也方便把符号计算验证过的结论回填成可执行脚本。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询