Skip to main content

Poisson 方程

· 4 min read
PuQing
AI, CVer, Pythoner, Half-stack Developer
info

已经多次遇到 Poisson\mathrm{Poisson} 方程了,所以介绍一下

方程表述

Δφ=f\Delta \varphi=f

这里的 Δ\Delta 代表的是 Laplace算子,而 ffφ\varphi 可以是实数或者复数方程。拉普拉斯算子又可以写成 2\nabla^2 所以,泊松方程通常写为:

2φ=f\nabla^2\varphi=f

在三维直角坐标系,可以写成

(2x2+2y2+2z2)φ(x,y,z)=f(x,y,z)\left(\frac{\partial^{2}}{\partial x^{2}}+\frac{\partial^{2}}{\partial y^{2}}+\frac{\partial^{2}}{\partial z^{2}}\right) \varphi(x, y, z)=f(x, y, z)

如果有 f(x,y,z)f(x,y,z) 恒等于 00,这个方程就会变为一个齐次方程,而这时可以称为拉普拉斯方程

Δφ=0\Delta \varphi = 0

求解

显然 Poisson\mathrm{Poisson} 方程是满足形式 Ly(x)=f(x)Ly(x)=f(x) 的,所以可以使用 Green 函数 中的构造一个 GreenGreen 函数进行求解。

第一类边界条件

第一类边界条件,也叫 Dirichlet\mathrm{Dirichlet} 边界条件,指的是直接告诉在边界上的数值,如:

{Δu=f, in Ωu=φ, in Ω\begin{cases} \Delta u=-f & , \text { in } \Omega \\ u=\varphi & , \text { in } \partial \Omega \end{cases}

其中的符号 Ω\Omega 值得是求解域,而 Ω\partial \Omega 就是边界上。

对应的齐次边界问题

{ΔG=δ, in ΩG=0, in Ω\begin{cases} \Delta G=-\delta & , \text { in } \Omega \\ G=0 & , \text { in } \partial \Omega \end{cases}

若能求出,对 GGff 做卷积,便得到 uu 的解。

(fG)(ξ)=Ωf(ξ)G(x;ξ)dξ(f*G)(\xi) = \int_{\Omega} f(\xi)G(x;\xi) \, d\xi
info

我们有求解域 Ω=(0,1)\Omega =(0,1),并在边界上满足 u(0)=0,u(1)=0u(0)=0,u(1)=0,并满足:

Δu=sin(x)\Delta u = \sin(x)

则求得 Green\mathrm{Green} 函数为

G(x,ξ)=(ξ1)Θ(ξx)+ξ(x1)Θ(xξ)G(x,\xi) = (\xi-1) \Theta(\xi-x) +\xi(x-1)\Theta(x-\xi)

其中的 Θ\Theta 单位阶跃函数 1

于是我们想求的 u(x)u(x),为

u(x)=(fG)(ξ)=Ωsin(ξ)G(x,ξ)dξu(x) = (f*G)(\xi) = \int_{\Omega}\sin(\xi) G(x,\xi) \, d\xi

解得:

u(x)=xsin(1)sin(x)u(x) = x \sin(1) - \sin(x)

第二类边界条件

也叫做 Neumann\mathrm{Neumann} 条件,指的是在边界上,数值的导数满足一个常数。

{Δu=f, in Ωun=φ, in Ω\begin{cases} \Delta u=-f & , \text { in } \Omega \\ \frac{\partial u}{\partial \mathbf{n}}=\varphi & , \text { in } \partial \Omega \end{cases}

这里的 n\mathbf{\partial n} 是指的空间微元。

对应的齐次边界问题

{ΔG=δ, in ΩGn=0, in Ω\begin{cases} \Delta G=-\delta & , \text { in } \Omega \\ \frac{\partial G}{\partial \mathbf{n}}=0 & , \text { in } \partial \Omega \end{cases}
info

对于求解域 Ω=(0,π/2)\Omega=(0,\pi/2),边界上满足 u(0)=0,u(1)=0u'(0)=0,u'(1)=0

并且满足

Δu+u=sin(x)\Delta u + u = \sin(x)

则求得 Green\mathrm{Green}

G(x;ξ)=cos(x)Θ(ξx)sin(ξ)+cos(ξ)Θ(xξ)sin(x)G(x;\xi) = \cos(x)\Theta(\xi-x)\sin(\xi)+\cos(\xi)\Theta(x-\xi)\sin(x)

同样的方法求得 uu

u(x)=14((π2x)cos(x)+2sin(x))u(x) =\frac{1}{4}((\pi-2 x) \cos (x)+2 \sin(x))

第三类边界条件

也称为 Robin\mathrm{Robin} 边界条件。

{Δu=f, in Ωun+σu=φ, in Ω\begin{cases} \Delta u=-f & , \text { in } \Omega \\ \frac{\partial u}{\partial \mathbf{n}}+\sigma u=\varphi & , \text { in } \partial \Omega \end{cases}

其中的 σ\sigma 为一系数

对应的齐次问题是

{ΔG=δ, in ΩGn+σG=0, in Ω\begin{cases} \Delta G=-\delta & , \text { in } \Omega \\ \frac{\partial G}{\partial \mathbf{n}}+\sigma G=0 & , \text { in } \partial \Omega \end{cases}
info

我们有 uu 在边界上满足 u(0)+3u(0)=0,u(π2)u(π2)=0u(0)+3u'(0)=0,u\left( \frac{\pi}{2} \right)-u'\left( \frac{\pi}{2} \right)=0,在定义域满足

Δu+u=sin(y)\Delta u+ u = \sin(y)

解得 Green\mathrm{Green} 函数为

G(x;ξ)=12Θ(ξs)(3cos(ξ)sin(ξ))(cos(x)sin(x))12Θ(ξx)(cos(ξ)sin(ξ))(3cos(x)sin(x))G(x;\xi) = -\frac{1}{2} \Theta (\xi-s) (3 \cos (\xi)-\sin (\xi)) (\cos (x)-\sin (x))-\frac{1}{2} \Theta (\xi-x) (\cos (\xi)-\sin (\xi)) (3 \cos (x)-\sin (x))

解得 u(x)u(x)

u(x)=18((4x+3π6)cos(x)(π6)sin(x))u(x)=\frac{1}{8} ((-4 x+3 \pi -6) \cos (x)-(\pi -6) \sin (x))

附录

求解参考代码 (Mathematica)

gf = GreenFunction[{u''[x] + u[x], u[0] + 3 u'[0] == 0, 
u[\[Pi]/2] - u'[\[Pi]/2] == 0}, u[x], {x, 0, \[Pi]/2}, s]

f[y_] = Sin[y]

Integrate[gf f[s], {s, 0, \[Pi]/2},
Assumptions -> 0 < x < \[Pi]/2] // Simplify

Footnotes

  1. :单位阶跃函数 - 维基百科,自由的百科全书