正如 Hui 上面指出的,要正确应用 Neumann 边界条件,您应该利用鬼点并扩展您的nth将离散化模具订购到您的域边界。在边界使用前向/后向差异或外推会降低您的解决方案。
假设一个2nd阶中心差分格式 Neuman 边界条件,ux(t,x=0)=p0(t),变成(省略(t)为方便起见):
ux|0=p0≈u1−u−12h
⇒u−1=u1−2hp0
现在,代替u−1进入边界处的离散方程,以获得 Dirichelt BCu0:
u0(t)=a(0)u1−2u0+u−1h2
⇒u0=a(0)2u1−2hp0h2+2a(0)
以这种方式应用 Neumann 边界条件是一致的,并且严格等价于在极限中应用解析 Dirichelt bch→0.
至于哪个更准确,对于有限h,如果您在边界处应用 Dirchlet 条件,则您在边界处的解析解和数值解之间施加了精确一致,但您对此时解导数的估计将包含2nd订单错误。应用 Neumann 边界条件只是做相反的事情,即在边界处产生解的导数的解析值和数值之间的精确一致性(使用您的有限差分模板估计),而估计u此时将包含一个2nd订单错误。在极限h→0两种方法都应该收敛到相同的唯一解。
如果您没有使用鬼点,那么您就没有以一致的方式应用 Neumann 条件,并且您的结果确实会比使用 Dirichelt 边界条件求解时更不准确。