那一戳便知晓一切
本级的上一篇已经向你推销了那个核心技巧,所以在动手之前,让我们再点它一次名。你有一个线性算子——比如拉紧的弦的 L[u] = -(d^2u/dx^2),或更一般的 L[u] = (d/dx)(p du/dx) + q u——而你想在区间 [a, b] 上、两端都被钉死的条件下,求解非齐次[[boundary-value-problem|边值问题]] L[u] = f(x)。格林的美妙想法是:不要一下子去问那个杂乱的载荷 f,而改问:系统对位于某一处 s 的单个无穷集中的单位戳击如何响应?这个响应,作为观测点 x 的函数,就是[[greens-function|格林函数]] G(x, s)。一旦你拥有它,整个问题的答案不过是一个叠加——u(x) = integral from a to b of G(x, s) f(x) ds——因为线性系统对一堆戳击之和的回应,正是各个回应之和。
说得精确些,G(x, s) 是 L[G] = delta(x - s) 的解,并且服从与原问题相同的齐次边界条件。这里 delta(x - s) 是中心在源点 s 的[[dirac-delta-function|狄拉克 delta]]——记住先前那份诚实:它根本不是一个真正的函数,而是一个分布,是越来越高、越来越窄、面积恒为一的尖峰的极限,唯有在积分之内才被赋予意义。正是这一微妙之处使得这套构造饶有趣味,因为一个真正的函数永远无法等于一个尖峰。本篇的全部手艺,就是把那个古怪的右端项,化成一份你能亲手执行的、彻底具体的配方。
四条要求把 G 完全钉死
下面这个关键领悟,把右端的一个分布化成了寻常的微积分。在远离源点之处——在每一个并不恰好等于 s 的 x 处——delta 不过就是零。于是在 s 的两侧,格林函数都满足平平无奇的*齐次*方程 L[G] = 0,正是那个你早已知道如何求解的方程。源唯独在单点 x = s 处显露存在,而它在那里的全部效应,都被浓缩进一条单一而尖锐的条件。所以 G 由两段寻常光滑的部件搭成,一段对应 x < s,一段对应 x > s,再在 s 处由若干编码着那一戳的规则缝合起来。
对一个二阶算子,四条要求就把 G 完全定死,而把这四条同时摆在眼前是值得的。其一,边界条件:G 必须服从问题自身的齐次边界条件——对两端固定的弦,G(a, s) = 0 且 G(b, s) = 0。其二,离源处的齐次方程:对一切不等于 s 的 x,在两侧各自地,L[G] = 0。其三,源点处的连续性:G 本身必须在 x = s 处连续——弦是被戳,不是被扯断,所以它没有豁口。其四,跳跃条件:一阶导数 dG/dx 在你越过 s 时必须发生一道突然的、可计算的跳跃。前三条感觉很自然;第四条才是关键所在,接下来两节先把它造出来,再把它挣到手。
那道跳跃从何而来
为什么一阶导数必须跳跃,而且恰恰跳那么多?这个论证很短,值得一看,因为它让 delta 做了它唯一的本职——积分为一。取自伴形式下的定义方程 (d/dx)(p dG/dx) + q G = delta(x - s),把两边在一个刀刃般薄的窗口上、从 s 减 epsilon 到 s 加 epsilon 积分,再让 epsilon 缩向零。右端你恰好得到 1,因为 delta 面积为一,而窗口正跨在它的尖峰之上。左端,q G 项在极限里毫无贡献:G 连续且有界,于是它在一个趋零窗口上的积分也趋零。唯有那个导数项幸存,而由微积分基本定理,它的积分不过是 p dG/dx 在窗口两缘处的取值之差。
把这两半拼到一起,跳跃条件便径直冒出来:p(s) 乘以 [ dG/dx 在 s 紧右侧的值,减去 dG/dx 在 s 紧左侧的值 ] 等于 1。换句话说,G 的导数在源点处*不连续*,当你跨过它时恰好跃变 1/p(s),而 G 本身则保持不断。对取 L = -d^2/dx^2 的素弦,自伴系数为 p = -1,于是 G 的右导数减左导数等于 -1:当你从左向右越过顶点时,帐篷的斜率掉了一。这个单一的数字,就是 delta 留下的指纹,也是你单凭齐次方程绝拿不到的那一条信息。
配方,逐步而行
现在把一切组装成一道你能在任何正则二阶边值问题上执行的程序。其思路是:在源的每一侧,挑那个本就满足该侧边界条件的齐次解——一半的条件白白搞定——再用连续性和跳跃来定下剩余的两个常数。你会需要 L[u] = 0 的[[fundamental-set-of-solutions|基本解组]],即那两个独立齐次解,每一个解都由它们搭成;求出它们,正是你在本卷较早处已经做过的、大一风格的活计。
- 求解齐次方程 L[u] = 0,找出两个独立解。把满足 a 处左边界条件的那个组合记作 u1,把满足 b 处右边界条件的那个组合记作 u2。(对弦,u1 = x - a 在 a 处归零;u2 = x - b 在 b 处归零。)
- 写下两段拟设:当 x 在 s 之下时 G(x, s) = A u1(x),当 x 在 s 之上时 G(x, s) = B u2(x)。左段已经服从 a 处的边界,右段已经服从 b 处的边界。只剩下两个未知常数 A 与 B,而它们可以依赖于 s。
- 在源点处施加连续性:两段在那里必须一致,所以 A u1(s) = B u2(s)。这是关于 A 与 B 的一个线性方程。
- 施加跳跃:在 s 处用右斜率减去左斜率,并令 p(s) 乘这个差等于 1。这给出 p(s) [ B u2'(s) - A u1'(s) ] = 1,即第二个线性方程。
- 解这个 2 乘 2 线性方程组求 A 与 B。出现的行列式恰是 p(s) 乘以 s 处的朗斯基行列式 W(u1, u2)——而一个基本事实让这一切干净利落:对自伴算子,p(x) W(x) 是一个常数,与 s 无关,于是这套代数齐齐塌缩。结果是 A = u2(s)/(pW) 与 B = u1(s)/(pW)。
- 把答案以其对称形式读出:G(x, s) = u1(x_<) u2(x_>) / (p W),其中 x_< 是 x 与 s 中较小者,x_> 是较大者。这一条公式一举覆盖两侧,并显露出对称性 G(x, s) = G(s, x)——源在 s 处对 x 的效应,等于源在 x 处对 s 的效应。
一顶帐篷,从头搭到尾
让我们在尽可能干净的例子上跑一遍配方,好让你看着每一个数字逐一现身:[0, 1] 上单位张力的弦,两端夹紧,满足 -G'' = delta(x - s)。齐次方程不过是 G'' = 0,其解是直线。穿过左墙的直线是 u1 = x(它在 0 处归零);穿过右墙的直线是 u2 = x - 1(它在 1 处归零)。于是 s 之下,G = A x;s 之上,G = B (x - 1)。s 处的连续性给出 A s = B (s - 1)。该算子的自伴系数为 p = -1,所以跳跃条件是 -[ B - A ] = 1——也就是右斜率 B 减去左斜率 A 必须等于 -1。
Problem: -G'' = delta(x - s) on [0,1], G(0)=0, G(1)=0
Homogeneous G''=0 -> straight lines.
left piece (vanishes at 0): G = A x
right piece (vanishes at 1): G = B (x - 1)
Two gluing conditions at x = s:
continuity: A s = B (s - 1)
jump (p = -1): B - A = -1 [ right slope - left slope ]
Solve: A = 1 - s , B = -s
| (1 - s) x for 0 <= x <= s (rising line)
G(x, s) = |
| s (1 - x) for s <= x <= 1 (falling line)
= (1 - x_>) x_< x_< = min(x,s), x_> = max(x,s)
Peak height at x = s : G(s, s) = s(1 - s) -> a tent.
Note the symmetry: G(x, s) = G(s, x).解那两个小方程给出 A = 1 - s 与 B = -s,于是 G(x, s) 在左侧是 (1 - s) x、右侧是 s (1 - x)——正是一顶在源正上方、峰高 s(1 - s) 的帐篷。现在收取回报。要解真正的问题 -u'' = f(x)、弦被夹紧,你再也不必碰那个微分方程;你只需对帐篷积分:u(x) = integral from 0 to 1 of G(x, s) f(s) ds。一个格林函数,只算一次,就打发掉你今后挂在这根弦上的*每一个*载荷 f。这正是格林为你换来的杠杆——并请留意,它完全来自求解一个齐次方程加上黏合,从未正面硬碰那个 delta。
小字,以及它通向何处
对这套构造何时奏效要诚实。它要求齐次问题在给定边界条件下*只有平凡解*——等价地说,零不是该算子的本征值。倘若有一个非零的 u 在两端边界条件都已满足的情况下解出 L[u] = 0,那么朗斯基行列式分母 p W 就会是零,公式随之炸裂;那时根本没有格林函数,而边值问题要么无解、要么有无穷多解。这恰是奇异矩阵的连续回响:当 L 有非平凡零空间时你无法对它求逆,正如你无法对一个带零本征值的矩阵求逆。这套配方默默假定了你身处可逆的情形。
还有两点说明让你保持诚实。我们在例子里见到的对称性 G(x, s) = G(s, x) 并非弦的巧合——只要算子是自伴的、边界条件属于对称的斯图姆–刘维尔那一类,它就成立,而对非自伴问题它会失效,那时你必须改用算子的伴随。还有,叠加 u(x) = integral of G(x, s) f(s) ds 恰恰是[[variation-of-parameters|参数变易法]]沿另一条路径所产出的东西;格林函数实际上就是参数变易法,只不过把积分限安排得从一开始便把边界条件烤了进去,于是答案无需再做任何调整。
退一步,看看你如今握有什么。格林函数是微分算子的连续逆——矩阵逆的对应物——而你只凭两个齐次解、一处连续性匹配、以及那一道可计算的导数跳跃,就能亲手把它造出来。同样的构造在以后每一种情形里反复出现:变的只是齐次解和系数 p。本级随后的指南把它继续向前推——把对称性与自伴的关联弄精确,再到把 G 重建为对你上一级遇到的那些斯图姆–刘维尔本征函数求和的本征函数展开,最后跃向偏微分方程,那里同样的「戳一下再叠加」想法解答了热方程与波方程。