格林函数是在边界条件或初始条件固定后,求解带源项的线性微分方程的标准工具。通俗地说,它告诉你:当系统在 ξ 处受到一个单位点源作用时,会如何响应。
对于线性算子 L,格林函数 G(x,ξ) 由下面这个点源问题定义:
LG(x,ξ)=δ(x−ξ)
这里把 x 看作变量,并要求它满足最终解也必须满足的同样边界条件或初始条件。这里的 δ(x−ξ) 是狄拉克 delta,它是一种分布,用来表示集中在 ξ 处的单位源。
如果这样的格林函数存在,并且问题是线性的,那么
Lu(x)=f(x)
的解通常可以写成
u(x)=∫G(x,ξ)f(ξ)dξ.
这就是核心思想:先把点源问题解一次,再把这些点响应组合起来,处理一般的源项 f。
格林函数的含义
delta 源正是这个定义有用的关键。你不是一开始就去解完整方程,而是先问:对最集中的输入,系统会怎样响应?
因此,你可以把 G(x,ξ) 理解为“在 ξ 处施加一个单位脉冲后,在 x 处产生的效果”。更复杂的源项 f,则可以看成许多点源的连续叠加。这一步之所以成立,只是因为问题是线性的。
为什么边界条件会改变答案
格林函数并不只由微分算子决定。它属于整个问题,而不仅仅是方程本身。
例如,在区间 0<x<1 上,算子 −u′′ 配合条件 u(0)=u(1)=0,其格林函数就不同于同一个算子配合 Neumann 边界条件时的格林函数。方程看起来也许一样,但允许的解变了,所以核函数也会变。
这是最常见的错误之一。除非题目已经把条件包含进去,否则并不存在某个“这个方程唯一的格林函数”。
例题:−u′′(x)=f(x) 的 Dirichlet 问题
考虑下面这个边值问题:
−u′′(x)=f(x),0<x<1,
并满足
u(0)=0,u(1)=0.
对于这个具体问题,格林函数是
G(x,ξ)={x(1−ξ),ξ(1−x),x≤ξ,x≥ξ.
它关于 x 是连续的,在 x=0 和 x=1 处为零,并且它的一阶导数在 x=ξ 处具有正确的跳跃。正是这个跳跃,使得方程 −G′′(x,ξ)=δ(x−ξ) 中出现了 delta 源。
一旦这个核函数已知,对于同一个边值问题的任意源项,都可以使用同一个公式:
u(x)=∫01G(x,ξ)f(ξ)dξ.
取一个简单的源项:
f(x)=1.
那么
u(x)=∫01G(x,ξ)dξ=∫0xξ(1−x)dξ+∫x1x(1−ξ)dξ.
分别计算两部分:
∫0xξ(1−x)dξ=(1−x)2x2,
∫x1x(1−ξ)dξ=x2(1−x)2.
把它们相加,得到
u(x)=2x(1−x).
快速检验一下:
u′(x)=21−2x,u′′(x)=−1,
所以
−u′′(x)=1=f(x),
而边界值为
u(0)=0,u(1)=0.
这个例子清楚地展示了格林函数方法的价值。你不需要对每个新的 f 都重新搭建方法;核函数保持不变,只需要改变积分中的源项。
格林函数的常见错误
- 误以为格林函数对非线性问题也能以同样方式使用。叠加这一步依赖于线性性。
- 忘记边界条件或初始条件本身就是定义的一部分。
- 认为核函数一定是对称的。对称性通常需要额外结构,例如合适的自伴设定。
- 把格林函数和基本解混为一谈。它们关系很近,但并不总是同一个对象。
- 没有先确认该问题的格林函数是否存在,就直接套用积分公式。
格林函数用在哪里
只要线性常微分方程或偏微分方程中出现源项,格林函数就会出现。它在静电学、扩散问题、波动问题、量子力学和弹性理论中都很常见。
在线性时不变系统中,它也与冲激响应密切相关。不同学科的说法可能不同,但核心思想相似:先理解系统对一个集中输入的响应,再由此构造对一般输入的响应。
一个快速记忆的方法
如果你忘了正式定义,可以记住这一句:
Green’s function=对单个点源的响应.
然后,完整解就是把定义域中所有点源响应加总起来,而这正是积分所做的事情。
试试一个类似的源项
保持相同的边界条件,但把 f(x)=1 换成 f(x)=x。核函数保持不变,变化的只有最后那个积分:
u(x)=∫01G(x,ξ)ξdξ.
这是一个很好的下一步练习,因为它能把两个变化部分清楚地区分开:格林函数属于问题设定本身,而源项则可以因题而异。如果你想继续练习,可以自己换一个源项,并检查所得积分结果是否满足边界条件。