格林函数方法

格林函数方法是求解非齐次微分方程(包括常微分、偏微分)方程的一个重要手段之一. 它的基本思想就是: 方程的非齐次项对方程的解的影响相当于一个个点源的影响的叠加. 因此只需要求解出在点源影响下的方程的解 g(x,x;t,t)g(x,x'; t,t') , 便可以通过此解叠加出原方程的解. 可以通过一个例子来理解格林函数的基本思想.

例子 1

解方程

d2y(t,τ)dx2=f(t),yt=0=0,ytt=0=0(t>0)(eq.1)\frac{\text{d}^2 y(t, \tau)}{\text{d}x^2} = f(t), \quad y|_{ t=0 } =0, y_t|_{ t=0 } =0\quad (t>0) \tag{eq.1}

这里 yt=yty_t = \frac{ \partial y}{ \partial t }, 以下均同.

这个方程说的是, 一个质量为1的"点状"物体受到一个变力 f(t)f(t) 的作用而运动. 从格林函数的思想出发, 我们把这个变力看成一个个脉冲力的叠加, 即 f(t)=(t)f(τ)δ(tτ)dτf(t) = \int ^{ (t) } f(\tau) \delta(t - \tau) \text{d} \tau[^1]. 根据微分方程的叠加原理, 我们只需要找到

ddx2g(t,τ)=δ(tτ),gt=0=0,gtt=0=0(eq.2)\frac{ \text{d}}{ \text{d} x^2 } g(t, \tau) = \delta(t - \tau), \quad g|_{t=0}=0, g_t|_{t=0} = 0 \tag{eq.2}

的解, 然后便可以叠加出原方程的解

y(t)=g(t,τ)f(τ)dτy(t) = \int g(t, \tau) f(\tau) \text{d}\tau

这个 gg 就是相应非齐次方程 (eq.1)\text{(eq.1)} 的格林函数. 因此下面要做的就是求解 g(t,τ)g(t, \tau). 可以直接积分两次得到格林函数, 但是这种做法在稍微复杂一点的微分方程中就不太现实了. 一个常用的方法是这样的:

t<τ或者t>τt < \tau 或者 t>\tau 时, (eq.2) 是齐次方程. 因此很容易就可以解出 g(t,τ)=a(τ)t+b(τ)g(t,\tau) = a(\tau)t + b(\tau). 根据(eq.2)的初始条件可以知道当 t<τt<\taua(τ)=b(τ)=0a(\tau) = b(\tau) = 0. 当 t=τt=\tau时, 可以证明有下面的这个结论[^2]:

g(τ0)=g(τ+0),dgdtt=τ0t=τ+0=1g(\tau-0) = g(\tau +0), \quad\frac{ \text{d} g}{ \text{d} t } \bigg|_{ t=\tau-0 } ^{ t=\tau + 0 } = 1

因此, g(t,τ)=(tτ)H(tτ)g(t,\tau) = (t - \tau) H(t - \tau), 这里 H(x)H(x) 是 Heaviside 阶跃函数, 当 x < 0 时取零, 当 x > 0 时取1.

这样, 便解出了(eq.1)的解:

y(t)=0f(τ)(tτ)H(tτ)dτ=0t(tτ)f(τ)dτ\begin{aligned} y(t) &= \int_0^{\infty} f(\tau) (t-\tau)H(t-\tau) d\tau \\ &= \int_0 ^t (t - \tau) f(\tau) \text{d}\tau \end{aligned}

结束.

上面(eq.1)的初始条件都是0, 但其实对于不是0的初始条件也可以用格林函数方法. 并且, 格林函数在 t=0t = 0 时刻依旧是满足 gt=0=0,gtt=0=0g|_{t=0} = 0, g_t|_{t=0} = 0的[^3].

到这里可以小结一下. 格林函数指的是这样的一类函数:

  • 它们满足跟待求解问题相同的方程形式, 但是非齐次项是一个 δ\delta 函数;
  • 它们的初始条件与待求解问题形式一致, 但都是齐次的(不论待求解问题的初始条件是否齐次).

例子 2

对于更一般的常微分方程

ddx[p(x)dy(x)dx]+q(x)y(x)=f(x)y(a)=A,y(b)=B,x(a,b)(eq.3)\begin{aligned} \frac{ \text{d} }{ \text{d} x } \left[ p(x) \frac{ \text{d} y(x)}{ \text{d} x } \right] + q(x) y(x) = f(x) \\ y(a) = A, y(b) = B, \quad x \in (a, b) \end{aligned} \tag{eq.3}

其相应的格林函数 g(x,ξ)g(x, \xi) 满足的方程:

ddx[p(x)dG(x,ξ)dx]+q(x)G(x,ξ)=δ(xξ)G(a,ξ)=0,G(b,ξ)=0,x(a,b)(eq.4)\begin{aligned} \frac{ \text{d} }{ \text{d} x } \left[ p(x) \frac{ \text{d} G(x, \xi)}{ \text{d} x } \right] + q(x) G(x,\xi) = \delta(x - \xi) \\ G(a,\xi) = 0, G(b, \xi) = 0, \quad x \in (a, b) \end{aligned} \tag{eq.4}

将自变量改写成 ξ\xi, 并利用Green函数的对称性 G(x,ξ)=G(ξ,x)G(x,\xi)= G(\xi, x)[^4], (eq.3),(eq.4)变成

ddξ[p(ξ)dy(ξ)dξ]+q(ξ)y(ξ)=f(ξ),ξ>0(1)\frac{ \text{d} }{ \text{d} \xi } \left[ p(\xi) \frac{ \text{d} y(\xi)}{ \text{d} \xi } \right] + q(\xi)y(\xi) = f(\xi), \quad \xi > 0 \tag1

ddξ[p(ξ)dG(x,ξ)dξ]+q(ξ)G(ξ,x)=δ(xξ),ξ>0G(ξ,x)ξ=a=0,G(ξ,x)ξ=b=0,ξ(a,b)}(2)\left. \begin{aligned} \frac{ \text{d} }{ \text{d} \xi} \left[ p(\xi) \frac{ \text{d} G(x,\xi)}{ \text{d} \xi } \right] + q(\xi)G(\xi, x) = \delta(x - \xi) , \quad \xi > 0 \\ G(\xi, x)|_{\xi = a} = 0, G(\xi, x)|_{\xi = b} = 0, \quad \xi \in (a, b) \end{aligned} \right\}\tag2

然后, G(x,ξ)×(1)y(ξ)×(2)G(x, \xi) \times (1) - y(\xi) \times (2), 再在 [a,b][a, b] 上积分, 利用 δ\delta 函数的挑选性以及 uvuv=(uvuv)u''v - uv'' = (u'v - uv')', 便可以得到 y(x) 与 G(x,ξ)G(x, \xi) 的关系. 计算结果为

y(x)=abG(x,ξ)f(ξ)dξ+Bp(b)dG(x,ξ)dξξ=bAp(a)dG(x,ξ)dξξ=ay(x) = \int_a^b G(x, \xi) f(\xi) \text{d}\xi + B p(b) \frac{ \text{d} G(x, \xi)}{ \text{d} \xi } \bigg|_{\xi=b} - A p(a) \frac{ \text{d} G(x, \xi)}{ \text{d} \xi } \bigg|_{\xi=a}

只要能求出格林函数, 就可以想办法把 y(x) 或者数值、或者解析地积出来.

上面的例1、例2分别讨论了单独关于时间 t, 单独关于空间坐标 x 的格林函数, 并得到了对称关系 G(x,ξ)=G(ξ,x)G(x,\xi) = G(\xi, x). 但是, 对于同时含有 x, t 的偏微分方程[^5], 可以证明, 格林函数存在倒易性: G(x,t;ξ,τ)=G(ξ,τ,x,t)G(x,t;\xi, \tau) = G(\xi, -\tau, x, -t)[^6]. 对此类偏微分方程的格林函数的求解也跟上面一样:

  1. 方程形式不变, 非齐次项变成 δ\delta 函数 δ(xξ)δ(tτ)\delta(x-\xi)\delta(t - \tau), 边界条件、初始条件均变为齐次;
  2. 然后把自变量从 xx 换成 ξ\xi, 写出关于 y(ξ,τ),G(ξ,τ;x,t)y(\xi, \tau), G(\xi, -\tau; x, -t) 对于 ξ,τ\xi, \tau 的偏微分方程;
  3. G(x,t;ξ,τ),y(ξ,τ)G(x,t; \xi, \tau), y(\xi, \tau) 分别乘以对应的偏微分方程, 积分, 利用初始条件、边界条件以及第二格林公式[^7] 表达出y(x,t)y(x,t).
  4. 求解格林函数. 可以用 Fourier级数法/ Laplace变换法/ Fourier变换法求解.
  5. 积出 y(x,t)y(x,t) 的最终表达式.

[^1]: δ\delta 函数的挑选性.
[^2]: 数学物理方法教科书上应该都会有.
[^3]: 这么做应该是为了最后积分的方便. 因为是0值, 所以就有可能消除一些比较讨厌的项.
[^4]: 构造一个新的函数 G(x,x)G(x,x')并令其满足跟G(x,ξ)G(x,\xi)相同形式的方程

ddx[p(x)dG(x,x)dx]+q(x)dG(x,x)dx=δ(xx)G(a,x)=0,G(b,x)=0,x(a,b)\begin{aligned} \frac{ \text{d} }{ \text{d} x } \left[ p(x) \frac{ \text{d} G(x, x')}{ \text{d} x } \right] + q(x) \frac{ \text{d} G(x, x')}{ \text{d} x } = \delta(x - x') \\ G(a,x') = 0, G(b, x') = 0, \quad x \in (a, b) \end{aligned}

然后让G(x,ξ)G(x,\xi) 乘这里的这个方程, G(x,x)G(x,x') 乘(eq.4), 然后将相乘后的方程相减, 并在[a,b][a, b]上积分, 代入边界条件便可以得到 G(x,ξ)=G(ξ,x)G(x, \xi) = G(\xi, x). 积分的过程中需要用到关系式uvuv=(uvuv)u''v - uv'' = (u'v - uv')'.

[^5]: 如波动方程 uttv2uxx=f(x,t)u_{tt} - v^2 u_{xx} = f(x,t), 热传导方程 utκuxx=f(x,t)u_t - \kappa u_{xx} = f(x,t)等.
[^6]: 证明方法跟脚注4相似.
[^7]:

(u2vv2u)dV=(uvnvun)dS\iiint\left( u \nabla^2 v - v \nabla^2 u \right) \text{d}V = \iint \left(u \frac{ \partial v}{ \partial n } - v \frac{ \partial u}{ \partial n } \right) \text{d}S