ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

拉普拉斯方程:球坐标与柱坐标下的分离变量与特殊函数全解析

拉普拉斯方程:球坐标与柱坐标下的分离变量与特殊函数全解析 拉普拉斯方程几乎是数学物理方法课里陪伴我们最久的一个方程。工作之后我做声场、热场相关的仿真回头再看当年在球坐标和柱坐标系下背过的那些解才真正意识到当时觉得特别绕的勒让德多项式和贝塞尔函数其实是一条清晰的链路上自然长出来的东西。这篇文章就把这条链路完整走一遍。我会先讲清楚为什么这类问题必须换成球坐标或柱坐标来处理再把分离变量法的每一步拆开看它如何分别导出球坐标系下的勒让德/球谐解和柱坐标系下的贝塞尔解最后用两个完整的边界值问题演示通解怎么落到具体系数上。内容适合正在学数学物理方法、电动力学或者需要处理热传导、静电、声学扩散问题的学生和工程师参考。1. 为什么球坐标和柱坐标才是拉普拉斯方程的主场1.1 直角坐标下解不动的边界条件从直角坐标入手是最自然的起步但也是最容易让人产生误解的地方。直角坐标下拉普拉斯方程 (u_{xx}u_{yy}u_{zz}0) 的分离变量非常简单解无非是正弦、余弦和指数函数的组合。问题是一旦把物理模型放到一个球形容器或者圆柱管道里边界条件写出来就非常痛苦。比如一个半径为 (a) 的球壳内壁保持某个电势分布边界条件要写成 (u(x,y,z)u_0) 当 (x^2y^2z^2a^2)直接代入直角坐标解就是一场噩梦。(x,y,z) 三个方向的乘积解在球面上互相纠缠没法逐个边界条件去匹配。这个问题的根源是直角坐标下的等坐标面是互相垂直的平面而球面、柱面的等坐标面是曲面。所谓坐标系适配边界指的就是让等坐标面恰好落在边界上。直角坐标对无限大平板长方体问题很好用对球和柱就完全不对味了。就像一个方形画框适合装方形的画你非要把圆形的画放进去最后只能裁掉一圈内容。1.2 算子的两种表达式从 div(grad) 出发球坐标下拉普拉斯算子是[ \nabla^2 u\frac{1}{r^2}\frac{\partial}{\partial r}\left(r^2\frac{\partial u}{\partial r}\right)\frac{1}{r^2\sin\theta}\frac{\partial}{\partial\theta}\left(\sin\theta\frac{\partial u}{\partial\theta}\right)\frac{1}{r^2\sin^2\theta}\frac{\partial^2 u}{\partial\phi^2} ]柱坐标下是[ \nabla^2 u\frac{1}{\rho}\frac{\partial}{\partial\rho}\left(\rho\frac{\partial u}{\partial\rho}\right)\frac{1}{\rho^2}\frac{\partial^2 u}{\partial\phi^2}\frac{\partial^2 u}{\partial z^2} ]很多人背不出来我的建议是不要背记住一个来源(\nabla^2 u\mathrm{div}(\mathrm{grad},u))。在正交曲线坐标系下div 和 grad 的表达式来自拉梅系数球坐标的拉梅系数是 (h_r1,\ h_\thetar,\ h_\phir\sin\theta)柱坐标的是 (h_\rho1,\ h_\phi\rho,\ h_z1)。把这些代入正交曲线坐标系下的通用公式两个算子两分钟就能推出来。为什么径向项总是 (\frac{1}{r^2}\frac{\partial}{\partial r}(r^2 u_r)) 或者 (\frac{1}{\rho}\frac{\partial}{\partial\rho}(\rho u_\rho))从物理上看(r) 方向的通量要乘以球面积 (4\pi r^2)(\rho) 方向的通量要乘以圆柱侧面积 (2\pi\rho L)每一项都带着面积权重在求变化率。理解到这个层面就算你哪天把公式忘干净也能用坐标变换从头推出来。1.3 选坐标系的唯一判据选坐标系的唯一判据就是求解区域的全部边界能否由某几个坐标面的等值面组合出来。球体、球壳、半球选球坐标圆柱、圆环柱、半无限长柱选柱坐标。除了几何适配还要看物理量的对称性如果问题绕某个轴旋转不变那 (\phi) 方向可以先分离出去如果问题在所有方向上都旋转对称角向只剩一个极角 (\theta)方程会明显简化。举个容易被带偏的例子一个无限长均匀带电圆筒产生的电势。几何上是圆柱所以用柱坐标很自然但因为沿 (z) 方向是无限长的场在 (z) 方向没有变化(\partial u/\partial z0)问题立刻退化成二维拉普拉斯方程。这时候径向解就不再是贝塞尔函数而是 (\rho^n) 和 (\rho^{-n})。坐标选得对还得会利用对称性继续降维。提示判断一个方向是否可分离可以看它是否满足两个条件——边界落在坐标面上且该方向没有耦合其他方向的物理量。两个条件缺一个分离变量法就会失效需要另想别的办法。2. 分离变量法把偏微分方程拆成三份互不相干的常微分方程2.1 乘积假设这一步到底在假设什么分离变量法最核心的一步是假设 (u(r,\theta,\phi)R(r)\Theta(\theta)\Phi(\phi))。注意这不是猜解是在赌一个问题这个偏微分方程能不能允许解被分解成三个一元函数的乘积。拉普拉斯方程在球和柱坐标里之所以可以是因为算子恰好能写成关于 (r) 的部分 关于 (\theta) 的部分 关于 (\phi) 的部分这种可加结构。代入方程后把只含 (r) 的项移到一边只含 (\theta) 和 (\phi) 的项移到另一边由于两边依赖的变量不同只能同时等于一个常数。这个常数就是分离常数。一个很重要的理解分离变量法不是对任意区域都成立的。它要求求解区域在每个坐标方向上都是规则的比如球坐标里 (\theta) 从 (0) 到 (\pi)、(\phi) 从 (0) 到 (2\pi)边界刚好是 (r\text{const})。如果区域是半个球、或者球内挖掉一个异形的腔边界不再落在坐标面上乘积解就无法逐点匹配边界这时只能用数值方法或者更一般的本征函数展开。2.2 分离常数的符号是第一个坑球坐标标准做法是令角度部分的分离常数为 (l(l1))而不是随便写个 (\lambda)。原因很明确(\theta) 方向的方程要变成勒让德方程的标准形式而且当我们在端点 (\theta0) 和 (\theta\pi) 处要求解有限时(l) 会被迫取非负整数。物理上这就是角动量量子数。为什么偏要 (l(l1))你可以试试把它写成 (\lambda)解出来之后你会发现必须 (\lambdal(l1)) 才能让级数截断成多项式否则端点发散。这是一个特征值问题的结论不是人为约定。柱坐标的符号问题更隐蔽。对 (Z) 方向既可能得到 (Z-k^2Z0)也可能得到 (Zk^2Z0)取哪个取决于你的边界条件是两个端面都给定还是一端给定、另一端无穷远衰减。经典有限长圆柱问题里常常取 (Z-k^2Z0) 得到 (\sinh/\cosh)而径向则要求贝塞尔函数在侧面零点如果是半无限长柱则取 (Z-k^2Z0) 的衰减解 (e^{-kz})这时径向方程会变成修正贝塞尔方程。符号选反整套解的形态就错了。2.3 勒让德和贝塞尔是长出来的不是背出来的很多同学第一次见到勒让德多项式和贝塞尔函数时觉得它们是两个凭空冒出来的特殊函数。我在上节已经暗示了关键它们都是从常微分方程在自然边界条件约束下长出来的。球坐标的角度变量 (\theta)做代换 (x\cos\theta) 之后(\theta) 方向的方程自动变成勒让德方程所以解就是勒让德函数柱坐标的径向变量 (\rho)做代换 (xk\rho) 之后径向方程自动变成贝塞尔方程所以解就是贝塞尔函数。换句话说你不需要去记什么时候用勒让德、什么时候用贝塞尔你只需要记住两条因果链球坐标 (\rightarrow) 角度方程 (\rightarrow) 勒让德方程 (\rightarrow P_l^m(\cos\theta))柱坐标 (\rightarrow) 径向方程 (\rightarrow) 贝塞尔方程 (\rightarrow J_n(k\rho),,Y_n(k\rho))再往深一层说这两个方程在数学上都是二阶线性常微分方程在正则奇点附近的级数解。勒让德函数的级数在 (l) 为整数时截断成多项式贝塞尔函数的级数对所有参数都存在是一个无限级数。它们不是特殊的技巧而是常微分方程理论在物理问题里的自然体现。3. 球坐标系下的通解从 (r^l) 到球谐函数3.1 径向方程的两个线性无关解在球坐标里设 (uR(r)\Theta(\theta)\Phi(\phi))(\phi) 方向解出 (e^{im\phi})(\theta) 方向解出连带勒让德函数 (P_l^m(\cos\theta))剩下的径向方程是[ r^2R2rR-l(l1)R0 ]这是一个欧拉方程。设 (Rr^s)代入得到代数方程 (s(s1)l(l1))所以 (sl) 或 (s-l-1)。两个线性无关解就是 (r^l) 和 (r^{-l-1})。这个结果从物理上非常好理解(r^l) 在原点为零、向外增长代表远处源产生的场在靠近原点区域的表现比如均匀外场在零点的展开(r^{-l-1}) 在无穷远处衰减、在原点发散代表原点附近的源在远处产生的场比如点电荷、电偶极子的多极展开。所以球内区域必须扔掉 (r^{-l-1})因为在原点它发散球外区域必须保留它因为远处的场要衰减为零。3.2 角度方程与自然边界条件角度部分的完整解是球谐函数 (Y_{lm}(\theta,\phi)N_{lm}P_l^m(\cos\theta)e^{im\phi})。(P_l^m) 是连带勒让德函数(l) 是非负整数(m) 是整数且 (|m|\le l)。这些量子数不是人为挑选的而是来自两个自然边界条件(\phi) 方向要求 (2\pi) 周期所以 (m) 必须为整数(\theta) 方向要求 (P_l^m) 在 (\theta0) 和 (\pi) 处有限否则级数发散这个有限性条件迫使 (l) 取整数且 (|m|\le l)。球谐函数的正交归一关系是[ \int_0^{2\pi}\int_0^{\pi} Y_{lm}^* Y_{lm}\sin\theta,d\theta,d\phi\delta_{ll}\delta_{mm} ]这意味着不同模式的解互不干扰叠加后的每一项系数可以独立求出。对轴对称问题(m0)球谐函数退化成 (P_l(\cos\theta))一般解变成[ u(r,\theta)\sum_{l0}^{\infty}\left(A_l r^lB_l r^{-l-1}\right)P_l(\cos\theta) ]这个形式在静电、热传导、流体势流问题里反复出现。记住它很多球对称问题直接套。3.3 完整算例均匀外场中的接地导体球设半径为 (a) 的接地导体球放在原来均匀电场 (E_0) 中外场沿 (z) 方向。区域 (ra) 内的电势满足拉普拉斯方程边界条件是 (u(a,\theta)0)并且在 (r\to\infty) 时 (u\to -E_0 r\cos\theta-E_0 rP_1(\cos\theta))。由无穷远条件可知只有 (l1) 的项存在(A_1-E_0)其他 (A_l0)。于是[ u(r,\theta)\left(-E_0 rB_1 r^{-2}\right)P_1(\cos\theta)\sum_{l\neq1}B_l r^{-l-1}P_l(\cos\theta) ]代入边界 (ra) 处 (u0)得到[ \left(-E_0aB_1a^{-2}\right)P_1\sum_{l\neq1}B_l a^{-l-1}P_l0 ]利用 (P_l) 的正交性求和号里面的每一项都要单独为零所以 (B_l0(l\neq1))且 (B_1E_0a^3)。最终[ u(r,\theta)-E_0r\cos\theta\frac{E_0a^3\cos\theta}{r^2}-E_0\left(r-\frac{a^3}{r^2}\right)\cos\theta ]这个式子有个很有意思的表现第二项就是一个 (z) 方向的电偶极子场偶极矩大小正比于 (a^3E_0)。导体球在均匀外场中会被极化极化场在远处看就是一个偶极子。求表面电荷(\sigma-\varepsilon_0\frac{\partial u}{\partial r}\big|_{ra}3\varepsilon_0 E_0\cos\theta)半球带正电、半球带负电整体净电荷为零。这个例子虽然简单但它演示了球坐标求解的完整流程先由无穷远条件锁定非零的 (l)再由球面条件确定剩下系数。绝大多数球问题都是在这个流程上加边界条件所以把这一题吃透比背十页公式都有用。4. 柱坐标系下的通解贝塞尔函数的取舍逻辑4.1 柱坐标分离得到的三个方程柱坐标下拉普拉斯方程做乘积假设 (uR(\rho)\Phi(\phi)Z(z)) 后三个方程分别是[ \Phin^2\Phi0 ][ Z-k^2Z0 ][ \rho^2R\rho R(k^2\rho^2-n^2)R0 ]其中 (n) 是整数由 (\phi) 的 (2\pi) 周期性决定(k) 是分离常数需要根据 (z) 方向的边界条件决定。(\Phi) 的解是 (e^{in\phi}) 或 (\sin/\cos)(Z) 的解是 (\sinh(kz))、(\cosh(kz)) 或者 (e^{\pm kz})径向方程在代换 (xk\rho) 后正是贝塞尔方程解为 (J_n(k\rho)) 和 (Y_n(k\rho))。如果 (z) 方向边界条件导致分离常数符号相反即取 (Zk^2Z0) 得到 (\sin/\cos)径向方程会变成修正贝塞尔方程 (x^2RxR-(x^2n^2)R0)解为 (I_n(k\rho)) 和 (K_n(k\rho))。后面这一套对应的是(z) 方向振荡、(\rho) 方向衰减或增长的情况在波导、传热、扩散问题里非常常见。这里我多提醒一句先想清楚 (Z) 方向到底是振荡还是指数型再决定径向用哪一族贝塞尔函数顺序不能反。4.2 J、Y、I、K四个函数的物理肖像贝塞尔方程的解族很容易把人绕晕但它们的物理性格其实很鲜明(J_n(x))第一类贝塞尔函数(x0) 处有限无穷远处衰减振荡。它描述柱内驻波式的径向分布比如圆膜振动、圆柱波导的模式。(Y_n(x))第二类贝塞尔函数(x0) 处对数发散无穷远处同样衰减振荡。当求解区域包含轴 (\rho0) 时(Y_n) 必须舍去区域是环形(a\rhob)时两项都要保留。(I_n(x))修正贝塞尔函数第一类(x0) 处有限随后指数增长。它描述的是在 (\rho) 方向向外增长的场。(K_n(x))修正贝塞尔函数第二类(x0) 处发散无穷远处指数衰减。它描述柱外的衰减场比如无限长圆柱外的温度分布或外部电势。记忆口诀实宗量对振荡虚宗量对指数。看到 (\sin/\cos) 型 (z) 依赖时径向大概率是 (J/Y)看到 (e^{-kz}) 型 (z) 依赖时径向也可能是普通贝塞尔具体情况要结合侧面边界条件综合判断。4.3 完整算例有限长圆柱的边界值问题半径为 (a)、高为 (h) 的圆柱底面 (z0) 电势为 (0)顶面 (zh) 电势为 (V_0)侧面 (\rhoa) 电势为 (0)。求柱内稳态电势分布。由于边界绕 (z) 轴对称(n0)(\Phi) 就是常数 (1)。底面的齐次条件让我们选 (Z(z)\sinh(kz))在 (z0) 处为零侧面的齐次条件要求 (R(a)0)也就是 (J_0(ka)0)。这里有个很重要的逻辑为什么不能用 (Z\sin(\lambda z)) 的振荡模式因为如果 (Z) 方向用 (\sin(\lambda z))径向会变成修正贝塞尔方程解是 (I_0(k\rho)) 和 (K_0(k\rho))而 (I_0) 在 (\rho0) 上没有实零点无法满足侧面 (\rhoa) 处电势为零的齐次边界。所以必须把本征值问题放在径向让 (J_0) 在侧面提供零点序列(z) 方向再用双曲函数去凑顶面条件。记第 (m) 个零点为 (k_max_m)则[ u(\rho,z)\sum_{m1}^{\infty}c_mJ_0(k_m\rho)\sinh(k_mz) ]顶面条件给出[ V_0\sum_{m1}^{\infty}c_mJ_0(k_m\rho)\sinh(k_mh) ]利用 (J_0) 在区间 ([0,a]) 上关于权函数 (\rho) 的正交性[ \int_0^a \rho J_0(k_m\rho)J_0(k_n\rho),d\rho\frac{a^2}{2}J_1^2(k_ma)\delta_{mn} ]两边乘 (\rho J_0(k_n\rho)) 再积分得到系数[ c_m\frac{2V_0}{a,k_mJ_1(k_ma)\sinh(k_mh)} ]注意系数分子分母里所有的符号。(J_1(k_ma)) 在零点处的值是正负交替的比如 (x_12.4048) 时 (J_1\approx0.5191)(x_25.5201) 时 (J_1\approx-0.3403)。如果写代码时把这些项全当成正的十有八九求出来的场会振荡得很奇怪。实算时我建议先求出前 20 个零点用数值求和对比有限差分确认没有符号错误。这个例子演示了柱坐标问题的骨架侧面边界定径向本征值底面边界定 (z) 方向解的形式顶面边界定叠加系数。换个边界条件流程还是一样的。5. 拿到实际问题时先想清楚这四件事5.1 先画区域和边界再选坐标系我见过太多人把公式背得滚瓜烂熟拿到一个新问题还是直接套通解结果在边界条件上卡住。正确的第一步永远是画图把求解区域画出来标出每个边界的坐标表达式再标出每个边界上的条件类型。判断坐标系是否适配就看所有边界是否都能写成某个坐标取常数的形式。比如球的表面是 (ra)圆柱的侧面是 (\rhoa)、上下底面是 (z0) 和 (zh)。如果边界既有球面又有平面分离变量法往往不适用得考虑镜像法或者数值解。画完图之后还有一个隐藏信息每个方向的取值范围。球坐标 (\theta) 一定在 ([0,\pi])(\phi) 一定在 ([0,2\pi])这两个自然边界提供有限性条件。柱坐标 (\rho) 是否包含原点决定了 (Y) 和 (K) 要不要舍去(z) 是否包含无穷远决定了应该选衰减指数还是双曲函数。千万不要拿到问题就写 (RAJ_0(k\rho)BY_0(k\rho))先问一句(\rho0) 在这个区域内吗在的话(Y) 直接划掉。5.2 特征值问题放在哪个方向分离变量之后通常有一个方向会被齐次边界条件夹住从而产生离散的特征值。球坐标里是 (\theta) 方向由有限性条件得到整数 (l)柱坐标里通常是径向 (\rho) 方向由侧面齐次边界得到贝塞尔函数的零点序列。这个方向的选择直接决定后面求和的形式。有一个普遍规律哪个方向被两端齐次边界或者自然周期/有限性条件约束哪个方向就出离散指标剩下的另一个非齐次方向用双曲函数或指数函数去匹配边界。但要注意柱坐标例子里还有一层逻辑径向贝塞尔函数的零点序列来自侧面的齐次边界而 (z) 方向的 (\sinh) 只是用来满足底面和顶面条件的一个自由度不是本征值指标。这和球坐标不同球坐标的求和指标来自角度方向径向 (r^l/r^{-l-1}) 的系数由 (r) 方向边界直接逐个确定。看清这个差异你就不会在球壳问题里错误地把径向也展开成无穷级数。5.3 边界条件是 Dirichlet 还是 Neumann直接决定解的形态很多初学者会忽略边界条件的类型差异。Dirichlet 条件给 (u) 本身Neumann 条件给 (\partial u/\partial n)混合条件给两者组合。物理上它们对应不同的场景导体表面等势是 Dirichlet绝缘边界和热通量为零是 Neumann对流换热边界则是混合条件。对拉普拉斯方程相同的区域和相同的 Dirichlet 条件会给出唯一解Neumann 条件则会在解里留下一个整体常数自由度。所以在用本征函数展开时注意常数项的处理球坐标解的 (l0) 项对应常数势或点电荷项柱坐标解的 (n0)、(k0) 项有时会退化成 (\ln\rho) 特殊模式。不要把这些退化情形漏掉它们是很多看似无解问题的答案。比如两个同轴长圆柱之间的二维电势径向解就是 (\ln\rho) 这种模式而不是贝塞尔级数。5.4 用数值工具快速验证特殊函数系数特殊函数的系数展开是很容易出符号错和零点错的地方。我现在的习惯是通解写完之后立刻写一个 20 行的验证脚本。用 scipy.special 可以很方便地拿到勒让德函数、贝塞尔函数和零点import numpy as np from scipy.special import j0, j1, jn_zeros, lpmv # 圆柱问题a1, h2, V010 a, h, V0 1.0, 2.0, 10.0 xs jn_zeros(0, 20) # J0 的无量纲零点 kms xs / a # 注意除以半径才是 k_m r, z 0.5, 1.0 u 0.0 for i, km in enumerate(kms): cm 2 * V0 / (a * km * j1(xs[i]) * np.sinh(km * h)) u cm * j0(km * r) * np.sinh(km * z) print(u)把数值结果跟直接解偏微分方程的有限差分结果对比如果误差在千分位以内说明系数没错。这个方法比人工检查每一步积分快得多。特别提醒scipy.special.jn_zeros 返回的是无量纲的 (x) 零点不是 (k) 本身如果你直接把 (x) 当成 (k) 代进去(J_0) 的自变量会差一个 (a) 倍结果完全不对。这个坑我踩过不止一次。6. 把这些方法沉淀成自己的计算习惯6.1 推导时不跳步的几条铁律我的第一条铁律是拿到偏微分方程后先写算子的完整表达式再做变量代换每一步的链式法则都要写清楚。比如球坐标分离变量时如果把 (\frac{1}{r^2}\frac{\partial}{\partial r}(r^2\frac{\partial R}{\partial r})) 展开成 (R2R/r)要确认系数是 2 而不是 1这也是欧拉方程 (s(s1)) 里 2 的来源。第二条铁律是分离常数的符号先定下来再往下走。你可以在纸上画两个箭头一个指向 (z) 方向的解类型一个指向径向贝塞尔/修正贝塞尔的类型。符号不定好后面所有公式都会飘。第三条铁律是每个坐标方向先数一下有几个边界条件。拉普拉斯方程每个变量是二阶的通常需要两个条件但像 (\theta) 方向和 (\phi) 方向边界条件是周期性和有限性不需要你像 (r) 方向那样人工指定。先把条件数齐再谈解。6.2 特殊函数做系数时的实用技巧用正交性求系数最常见的形式是[ c_l\frac{2l1}{2}\int_{-1}^{1}f(x)P_l(x),dx ]或者[ c_m\frac{2}{a^2J_{n1}^2(k_ma)}\int_0^a\rho f(\rho)J_n(k_m\rho),d\rho ]我在手算时有两个习惯。第一先做变量代换 (x\cos\theta) 再展开积分不要在 (\sin\theta) 和 (\cos\theta) 之间来回倒第二遇到 (\int \rho J_0(k\rho),d\rho) 这类积分先查导数关系 (\frac{d}{dx}[xJ_1(x)]xJ_0(x))能省掉大量分部积分。对常数函数 (fV_0)上面的积分正好是 ((a/k_m)J_1(k_ma))所以系数才那么整洁。熟练后你会发现特殊函数的许多积分规律本质上就是那几条递推关系在反复使用。还有一个经验不要在系数推导里掺入过多物理量符号。先把数学问题解完得到系数表达式再代电导率、介电常数这些物理参数。符号与物理量混在一起出错率会成倍上升。6.3 几个我反复用到的记忆锚点球坐标解里有 (l) 和 (m) 两个整数标记本质上是角动量量子数。把球谐函数理解为角向模式就能跟量子力学里的氢原子波函数直接对上。柱坐标解里有 (n) 和 (k_m) 两个标记(n) 描述 (\phi) 方向的周期模式(k_m) 描述径向的驻波模式。圆膜振动、光纤模式、圆柱波导全是这套语言。另一个更上层的锚点是拉普拉斯方程是线性方程所以解可以无限叠加特殊函数的正交性保证了叠加系数可以独立求解。这是整个本征函数展开方法的支柱也是后面处理泊松方程、亥姆霍兹方程的地基。等你学到施图姆-刘维尔型方程的一般理论时会立刻认出它和这里的共同骨架一个算子的特征函数族加上一组正交性展开系数就水到渠成。
返回列表