pdepe
求解一维抛物型和椭圆型 PDE
语法
说明
[
还求 (t,u(x,t)) 的函数(称为事件函数)在何处为零。在输出中,sol
,tsol
,sole
,te
,ie
] = pdepe(m
,pdefun
,icfun
,bcfun
,xmesh
,tspan
,options
)te
是事件的时间,sole
是事件发生时的解,ie
是触发的事件的索引。tsol
是 tspan
中指定的、第一次终止事件之前的时间的列向量。
对于每个事件函数,应指定积分是否在零点处终止以及过零方向是否重要。为此,请将 odeset
的 Events
选项设置为函数(例如 @myEventFcn
),并创建一个对应的函数:[value
,isterminal
,direction
] = myEventFcn
(m
,t
,xmesh
,umesh
)。xmesh
输入包含空间网格,umesh
是网格点上的解。
示例
输入参数
输出参量
提示
如果
uji = sol(j,:,i)
在时间tspan(j)
和网格点xmesh
处近似于解的分量i
,则pdeval
计算在点数组xout
处的逼近值及其偏导数 ∂ui/∂x,并将其在uout
和duoutdx
中返回:[uout,duoutdx] = pdeval(m,xmesh,uji,xout)
。pdeval
函数计算偏导数 ∂ui/∂x,而不是通量。通量是持续的,但在物质界面处偏导数可能有跳跃。
算法
时间积分使用 ode15s
求解器完成。pdepe
利用 ode15s
的功能解算当 PDE 包含椭圆型方程时产生的微分代数方程,并用来处理具有指定稀疏类型的雅可比矩阵。
经离散化处理后,椭圆型方程会生成代数方程。如果与椭圆型方程对应的初始条件向量的元素与离散化的结果不一致,pdepe
会在开始时间积分之前尝试调整这些元素。因此,为初始时间返回的解可能具有与其他时间类似的离散化误差。如果网格足够精细,pdepe
可找到接近于给定条件的一致初始条件。如果 pdepe
显示消息称找不到一致初始条件,请尝试细化网格。对于与抛物型方程对应的初始条件向量元素,则无需调整。
参考
[1] Skeel, R. D. and M. Berzins, "A Method for the Spatial Discretization of Parabolic Equations in One Space Variable," SIAM Journal on Scientific and Statistical Computing, Vol. 11, 1990, pp.1–32.