格林函数方法
格林函数方法是求解非齐次微分方程(包括常微分、偏微分)方程的一个重要手段之一. 它的基本思想就是: 方程的非齐次项对方程的解的影响相当于一个个点源的影响的叠加. 因此只需要求解出在点源影响下的方程的解 g(x,x′;t,t′) , 便可以通过此解叠加出原方程的解. 可以通过一个例子来理解格林函数的基本思想.
例子 1
解方程
dx2d2y(t,τ)=f(t),y∣t=0=0,yt∣t=0=0(t>0)(eq.1)
这里 yt=∂t∂y, 以下均同.
这个方程说的是, 一个质量为1的"点状"物体受到一个变力 f(t) 的作用而运动. 从格林函数的思想出发, 我们把这个变力看成一个个脉冲力的叠加, 即 f(t)=∫(t)f(τ)δ(t−τ)dτ[^1]. 根据微分方程的叠加原理, 我们只需要找到
dx2dg(t,τ)=δ(t−τ),g∣t=0=0,gt∣t=0=0(eq.2)
的解, 然后便可以叠加出原方程的解
y(t)=∫g(t,τ)f(τ)dτ
这个 g 就是相应非齐次方程 (eq.1) 的格林函数. 因此下面要做的就是求解 g(t,τ). 可以直接积分两次得到格林函数, 但是这种做法在稍微复杂一点的微分方程中就不太现实了. 一个常用的方法是这样的:
当 t<τ或者t>τ 时, (eq.2) 是齐次方程. 因此很容易就可以解出 g(t,τ)=a(τ)t+b(τ). 根据(eq.2)的初始条件可以知道当 t<τ 时 a(τ)=b(τ)=0. 当 t=τ时, 可以证明有下面的这个结论[^2]:
g(τ−0)=g(τ+0),dtdg∣∣t=τ−0t=τ+0=1
因此, g(t,τ)=(t−τ)H(t−τ), 这里 H(x) 是 Heaviside 阶跃函数, 当 x < 0 时取零, 当 x > 0 时取1.
这样, 便解出了(eq.1)的解:
y(t)=∫0∞f(τ)(t−τ)H(t−τ)dτ=∫0t(t−τ)f(τ)dτ
结束.
上面(eq.1)的初始条件都是0, 但其实对于不是0的初始条件也可以用格林函数方法. 并且, 格林函数在 t=0 时刻依旧是满足 g∣t=0=0,gt∣t=0=0的[^3].
到这里可以小结一下. 格林函数指的是这样的一类函数:
- 它们满足跟待求解问题相同的方程形式, 但是非齐次项是一个 δ 函数;
- 它们的初始条件与待求解问题形式一致, 但都是齐次的(不论待求解问题的初始条件是否齐次).
例子 2
对于更一般的常微分方程
dxd[p(x)dxdy(x)]+q(x)y(x)=f(x)y(a)=A,y(b)=B,x∈(a,b)(eq.3)
其相应的格林函数 g(x,ξ) 满足的方程:
dxd[p(x)dxdG(x,ξ)]+q(x)G(x,ξ)=δ(x−ξ)G(a,ξ)=0,G(b,ξ)=0,x∈(a,b)(eq.4)
将自变量改写成 ξ, 并利用Green函数的对称性 G(x,ξ)=G(ξ,x)[^4], (eq.3),(eq.4)变成
dξd[p(ξ)dξdy(ξ)]+q(ξ)y(ξ)=f(ξ),ξ>0(1)
dξd[p(ξ)dξdG(x,ξ)]+q(ξ)G(ξ,x)=δ(x−ξ),ξ>0G(ξ,x)∣ξ=a=0,G(ξ,x)∣ξ=b=0,ξ∈(a,b)⎭⎬⎫(2)
然后, G(x,ξ)×(1)−y(ξ)×(2), 再在 [a,b] 上积分, 利用 δ 函数的挑选性以及 u′′v−uv′′=(u′v−uv′)′, 便可以得到 y(x) 与 G(x,ξ) 的关系. 计算结果为
y(x)=∫abG(x,ξ)f(ξ)dξ+Bp(b)dξdG(x,ξ)∣∣ξ=b−Ap(a)dξdG(x,ξ)∣∣ξ=a
只要能求出格林函数, 就可以想办法把 y(x) 或者数值、或者解析地积出来.
上面的例1、例2分别讨论了单独关于时间 t, 单独关于空间坐标 x 的格林函数, 并得到了对称关系 G(x,ξ)=G(ξ,x). 但是, 对于同时含有 x, t 的偏微分方程[^5], 可以证明, 格林函数存在倒易性: G(x,t;ξ,τ)=G(ξ,−τ,x,−t)[^6]. 对此类偏微分方程的格林函数的求解也跟上面一样:
- 方程形式不变, 非齐次项变成 δ 函数 δ(x−ξ)δ(t−τ), 边界条件、初始条件均变为齐次;
- 然后把自变量从 x 换成 ξ, 写出关于 y(ξ,τ),G(ξ,−τ;x,−t) 对于 ξ,τ 的偏微分方程;
- 用 G(x,t;ξ,τ),y(ξ,τ) 分别乘以对应的偏微分方程, 积分, 利用初始条件、边界条件以及第二格林公式[^7] 表达出y(x,t).
- 求解格林函数. 可以用 Fourier级数法/ Laplace变换法/ Fourier变换法求解.
- 积出 y(x,t) 的最终表达式.
[^1]: δ 函数的挑选性.
[^2]: 数学物理方法教科书上应该都会有.
[^3]: 这么做应该是为了最后积分的方便. 因为是0值, 所以就有可能消除一些比较讨厌的项.
[^4]: 构造一个新的函数 G(x,x′)并令其满足跟G(x,ξ)相同形式的方程
dxd[p(x)dxdG(x,x′)]+q(x)dxdG(x,x′)=δ(x−x′)G(a,x′)=0,G(b,x′)=0,x∈(a,b)
然后让G(x,ξ) 乘这里的这个方程, G(x,x′) 乘(eq.4), 然后将相乘后的方程相减, 并在[a,b]上积分, 代入边界条件便可以得到 G(x,ξ)=G(ξ,x). 积分的过程中需要用到关系式u′′v−uv′′=(u′v−uv′)′.
[^5]: 如波动方程 utt−v2uxx=f(x,t), 热传导方程 ut−κuxx=f(x,t)等.
[^6]: 证明方法跟脚注4相似.
[^7]:
∭(u∇2v−v∇2u)dV=∬(u∂n∂v−v∂n∂u)dS