pdepe
解决一维抛物线和椭圆pde
语法
描述
(
还发现的功能(t,u(x,t)),称为事件函数,是零。在输出中,索尔
,tsol
,唯一的
,te
,即
)= pdepe (米
,pdefun
,icfun
,bcfun
,xmesh
,tspan
,选项
)te
事件的时间,唯一的
是解决方案时的事件,然后呢即
触发事件的索引。tsol
是一个列向量中指定的吗tspan
之前,第一个终端事件。
对于每个事件函数,指定是否终止的集成是一个零和是否零交点的方向很重要。通过设置的呢“事件”
选择odeset
一个函数,如@myEventFcn
,创建一个对应的功能:价值
,isterminal
,方向
]=myEventFcn
(米
,t
,xmesh
,umesh
)。的xmesh
输入包含空间网格和umesh
网格点的解决方案。
例子
在圆柱坐标系中解决热方程
解决热方程在圆柱坐标使用pdepe
、策划解决方案。
在圆柱坐标与角度对称热方程
方程的定义 有时 。初始条件的贝塞尔函数定义 和它的第一个零 作为
因为这个问题是在圆柱坐标(m = 1
),pdepe
自动执行对称条件
。正确的边界条件
初始和边界条件选择符合分析解决问题,
在MATLAB解这个方程,方程需要代码,初始条件和边界条件,然后选择一个合适的解决方案网在调用解算器之前pdepe
。你要么可以包括所需的函数作为本地功能的文件(如在这里完成),或者拯救他们作为独立,在MATLAB上的一个目录路径命名文件。
代码方程
代码之前,您需要重写形式pdepe
解算器的预期。的标准形式pdepe
预计是
用这种形式,PDE
用适当的形式的方程可以读出相关条款:
现在您可以创建一个函数代码。函数应该签名[c、f、s] = heatcyl (x, t, u, dudx)
:
x
是独立空间变量。t
是独立的变量。u
因变量是分化对吗x
和t
。dudx
空间导数部分吗 。输出
c
,f
,年代
标准PDE对应系数方程的形式pdepe
。这些系数编码的输入变量x
,t
,u
,dudx
。
因此,在这个例子中方程可以表示为的函数:
函数[c、f、s] = heatcyl (x, t, u, dudx) c = 1;f = dudx;s = 0;结束
(注意:所有的功能都作为本地函数结束时的例子。)
代码的初始条件
接下来,编写一个函数,它返回初始条件。初始条件是应用于第一次值tspan (1)
。函数应该签名情况= heatic (x)
。
相应的函数 是
函数情况= heatic (x) n = 2.404825557695773;情况= besselj (0 n * x);结束
代码边界条件
现在,写一个函数,计算边界条件
因为这个问题是在圆柱坐标(m = 1
),pdepe
自动执行对称条件
,因此您不需要指定一个左边界条件。
问题的区间 ,边界条件申请 ,要么 或 。所期望的标准形式的边界条件解算器
用这种形式,边界条件的偏导数 需要表达的变化 。所以这个问题是正确的边界条件
边界函数应该有函数签名[pl, ql,公关,qr] = heatbc (xl, ul, xr, ur, t)
:
输入
xl
和ul
对应于 和 为左边界。输入
xr
和你的
对应于 和 为正确的边界。t
是独立的变量。输出
pl
和ql
对应于 和 为左边界( 对于这个问题)。输出
公关
和qr
对应于 和 正确的边界( 对于这个问题)。
本例中的边界条件由函数:
函数[pl, ql,公关,qr] = heatbc (xl, ul, xr, ur, t) n = 2.404825557695773;pl = 0;%被解算器忽略因为m = 1ql = 0;%被解算器忽略因为m = 1公关= ur-besselj (0, n) * exp (- n ^ 2 * t);qr = 0;结束
选择解决方案网
解方程之前您需要指定网格点
你想要的pdepe
评估解决方案。指定点的向量t
和x
。向量t
和x
在解算器中扮演不同的角色。特别是,解决方案的成本和精度强烈依赖于向量的长度x
。然而,计算向量中的值不太敏感t
。
对于这个问题,使用网格25等距的点在空间区间[0,1]x
和t
。
x = linspace (0, 1,25);t = linspace (0, 1,25);
解决方程
最后,使用对称解的方程米
PDE方程,初始条件、边界条件、网格x
和t
。
m = 1;索尔= pdepe (m, @heatcyl, @heatic @heatbc x, t);
pdepe
回报的解决方案在一个三维数组索尔
,在那里索尔(i, j, k)
接近k
解决方案的组件
评估在t(我)
和x (j)
。的大小索尔
是长度(t)
——- - - - - -长度(x)
——- - - - - -长度(情况)
,因为情况
为每个解决方案组件指定一个初始条件。对于这个问题,u
只有一个组件,所以呢索尔
是一个25-by-25矩阵,但总的来说你能提取吗k
解决方案组件的命令u =索尔(:,:,k)
。
提取第一个解决方案组件索尔
。
u =索尔(:,:1);
策划解决方案
创建一个解决方案的曲面图。以来所带来的问题是与圆柱坐标盘x
值显示温度对圆盘中心的距离,和t
值显示在特定位置的温度会随着时间而改变。
冲浪(x, t, u)包含(“x”)ylabel (“t”)zlabel (“u (x, t)”)视图(25 [150])
情节中心温度变化( )的阀瓣。
情节(t,索尔(:1))包含(“时间”)ylabel (“温度u (0, t)”)标题(“在圆盘中心温度变化”)
本地函数
这里列出当地PDE解算器的辅助函数pdepe
调用计算解决方案。或者,您可以保存这些函数作为自己的文件在MATLAB上的一个目录路径。
函数[c、f、s] = heatcyl (x, t, u, dudx) c = 1;f = dudx;s = 0;结束% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -函数情况= heatic (x) n = 2.404825557695773;情况= besselj (0 n * x);结束% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -函数[pl, ql,公关,qr] = heatbc (xl, ul, xr, ur, t) n = 2.404825557695773;pl = 0;%被解算器忽略因为m = 1ql = 0;%被解算器忽略因为m = 1公关= ur-besselj (0, n) * exp (- n ^ 2 * t);qr = 0;结束% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
解决振荡PDE事件日志记录
解决偏微分方程,并使用一个事件函数零交点登录振荡的解决方案。
考虑方程
方程的定义 和 。初始条件是
边界条件是
此外,解决方案的零交叉感兴趣的。
在MATLAB解这个方程,方程需要代码,初始条件,边界条件,和事件函数,然后选择一个合适的解决方案网在调用解算器之前pdepe
。你要么可以包括所需的函数作为本地功能的文件(如在这里完成),或者拯救他们作为独立,在MATLAB上的一个目录路径命名文件。
代码方程
代码之前,您需要重写形式pdepe
解算器的预期。的标准形式pdepe
预计是
PDE方程已经以这种形式:
所以你可以读出相关条款:
现在您可以创建一个函数代码。函数应该签名[c、f、s] = oscpde (x, t, u, dudx)
:
x
是独立空间变量。t
是独立的变量。u
因变量是分化对吗x
和t
。dudx
空间导数部分吗 。输出
c
,f
,年代
标准PDE对应系数方程的形式pdepe
。这些系数编码的输入变量x
,t
,u
,dudx
。
因此,在这个例子中方程可以表示为的函数:
函数[c、f、s] = oscpde (x, t, u, dudx) c = 1 / x;f = u / t;s = 0;结束
(注意:所有的功能都作为本地函数结束时的例子。)
代码的初始条件
接下来,编写一个函数,它返回初始条件。初始条件是应用于第一次值tspan (1)
。函数应该签名情况= oscic (x)
。
相应的函数 是
函数情况= oscic (x)情况= 1;结束
代码边界条件
现在,写一个函数,计算边界条件
问题的区间 ,边界条件申请 ,要么 或 。所期望的标准形式的边界条件解算器
用这种形式,这个问题的边界条件
边界函数应该有函数签名[pl, ql,公关,qr] = oscbc (xl, ul, xr, ur, t)
:
输入
xl
和ul
对应于 和 为左边界。输入
xr
和你的
对应于 和 为正确的边界。t
是独立的变量。输出
pl
和ql
对应于 和 为左边界( 对于这个问题)。输出
公关
和qr
对应于 和 正确的边界( 对于这个问题)。
本例中的边界条件由函数:
函数[pl, ql,公关,qr] = oscbc (xl, ul, xr, ur, t) pl = ul - 1;ql = 0;公关= ur - cos(π* t);qr = 0;结束
代码事件函数
使用一个事件函数记录的零交叉集成解决方案。事件函数的函数签名(价值、isterminal方向)= pdevents (m t xmesh umesh)
:
米
是坐标对称指定为第一个输入pdepe
。t
是当前时间(标量)。xmesh
空间网。umesh
包含在网格点的解决方案。价值
是感兴趣的一个方程,通常表达的解决方案吗umesh
。当价值
= 0,一个事件发生。isterminal
指定一个事件是否停止积分。如果isterminal
是0,但是事件记录集成不停止。如果isterminal
是1,那么集成事件发生时停止。方向
指定零交叉的方向。如果1,只有零交叉正斜率触发事件。如果1,零交点必须具有负斜率。如果0,那么任何讨论二阶导数过零触发一个事件。
在每一次集成,解算器调用的事件函数为零交叉检查。记录所有的零交叉,价值
应该寻找变化的迹象在解决方案向量umesh
。指定isterminal
和方向
零的向量具有相同的大小,因为这些事件在这个例子不是终端和零交叉可以发生在任何的斜率。
这个问题的事件函数
函数(价值、isterminal方向)= pdevents (m t xmesh umesh)值= umesh;isterminal = 0(大小(umesh));方向= 0(大小(umesh));结束
选择解决方案网
解方程之前您需要指定网格点
你想要的pdepe
评估解决方案。对于这个问题,使用细网格50点的间隔
和
。一个细孔给好的解决振荡的解决方案。
x = linspace (0, 1, 50);t = linspace(0.1,π,50);
解决方程
最后,使用对称解的方程米
PDE方程,初始条件、边界条件、事件函数,和网格x
和t
。使用odeset
创建一个选项结构引用的事件函数,最后通过结构作为输入参数pdepe
。指定5个输出参数返回信息的事件函数和求解器:
索尔
解决方案计算吗pdepe
。tsol
之前是一个向量乘以一个终端事件。tsol
等于t
当没有事件是终端。唯一的
解决方案是在每个事件的时候。te
每个事件的时间。即
是每个事件的索引。自值= umesh
如果函数,即
给出了指数的umesh
在每个时间步,触发一个事件。
m = 0;选择= odeset (“事件”,@pdevents);[tsol溶胶,唯一,te, ie) = pdepe (m, @oscpde, @oscic @oscbc x, t,选项);
提取解决方案作为一个矩阵u
。
u =索尔(:,:1);
策划解决方案
创建一个解决方案的曲面图和视图情节从上面。
冲浪(x, t, u)视图(2)
情节点的事件发生,表面
供参考。产出指数向量即
有助于找出事件的位置。表达式x (ie) '
给x事件发生的地方,和表达式唯一(x = = x (ie) ')
值给出了相应的解决方案。
视图([30]39)包含(“x”)ylabel (“t”)zlabel (“u (x, t)”)举行在plot3 (x (ie), te,唯一(x = = x (ie) '),的r *)冲浪(x t 0(大小(u)),“EdgeColor”,“平”)举行从
本地函数
这里列出当地的辅助函数,PDE解决pdepe调用计算解决方案。或者,您可以保存这些函数作为自己的文件在MATLAB上的一个目录路径。
函数[c、f、s] = oscpde (x, t, u, dudx) c = 1 / x;f = u / t;s = 0;结束% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -函数情况= oscic (x)情况= 1;结束% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -函数[pl, ql,公关,qr] = oscbc (xl, ul, xr, ur, t) pl = ul - 1;ql = 0;公关= ur - cos(π* t);qr = 0;结束% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -函数(价值、isterminal方向)= pdevents (m t xmesh umesh)值= umesh;isterminal = 0(大小(umesh));方向= 0(大小(umesh));结束% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
输入参数
米
- - - - - -对称不变
0
|1
|2
对称不变,指定为这个表中的值之一。米
指定了在指定的方程类型的问题pdefun
。一旦你重写所期望的方程形式pdepe
,你可以阅读的价值米
从这个方程。
价值 | 描述 | 拉普拉斯算子的通量 |
---|---|---|
|
一维笛卡尔坐标与不对称 |
|
|
二维圆柱坐标和方位角度对称 |
, 在哪里 (方位对称)。 |
|
三维球坐标方位和天顶角对称 |
, 在哪里 (方位和天顶角对称)。 |
当m > 0
,pdepe
需要离开空间边界一个≥0,它对左边界条件自动占坐标不连续在原点。在这种情况下,pdepe
忽略任何指定的左边界条件bcfun
。
pdefun
- - - - - -PDE函数方程
函数处理
PDE函数方程,指定为一个函数处理,定义了PDE的系数。
pdefun
编码系数对pde的形式
方程的条件是:
是一个通量的术语。
是一个源项。
的耦合对时间的偏导数是局限于对角矩阵乘法 。这个矩阵的对角元素要么是零个或积极。是零元素对应于一个椭圆方程,和所有其他元素对应于抛物方程。必须有至少一个抛物型方程。一个元素的c对应于一个抛物线方程可以消失在孤立的值x如果这些值x是网格点。
的不连续性c和年代由于材料提供的接口允许网格点放置在每一个接口。
pde的坚持t0≤t≤tf和一个≤x≤b。的值tspan (1)
和tspan(结束)
对应于t0和tf,而xmesh (1)
和xmesh(结束)
对应于一个和b。的时间间隔(一个,b]必须是有限的。米
可以是0、1或2,对应板,圆柱形,分别或球面对称。如果米> 0,然后一个必须≥0。
编码的方程
写一个函数pdefun
计算系数的值c,f,年代。使用函数签名
[c、f、s] = pdefun (x, t, u, dudx)
输入参数pdefun
是标量x
和t
和向量u
和dudx
。向量u
近似的解决方案u,dudx
接近它的偏导数x。输出参数c
,f
,年代
列向量的元素的数量等于方程。c
存储矩阵的对角元素c。
例子
热方程 可以改写在解算器的形式
这种形式可以读出的值系数米= 0,c= 1,f=∂u/∂x,年代= 0。函数方程是:
函数[c、f、s] = heatpde (x, t, u, dudx) c = 1;f = dudx;s = 0;结束
数据类型:function_handle
icfun
- - - - - -初始条件的函数
函数处理
初始条件的函数,指定为一个函数处理,定义了初始条件。
为t=t0和所有x的解决方案组件满足初始条件的形式
编码初始条件
写一个函数icfun
定义初始条件。使用函数签名:
函数情况= icfun (x)
当调用了一个论点x
,函数icfun
评估并返回初始值的解决方案组件x
的列向量情况
。元素的数量情况
等于方程的数量。
例子
常数初始条件 对应于这个函数:
函数情况= heatic (x)情况= 0.5;结束
数据类型:function_handle
bcfun
- - - - - -边界条件的函数
函数处理
边界条件的函数,指定为一个函数定义边界条件的处理。
对所有t,要么x=一个或x=b的解决方案组件满足边界条件的形式
的元素问要么是从不零或零。注意表达的边界条件的变化f而不是∂u/∂x。同时,这两个系数,只有p可以依赖u。
编码边界条件
写一个函数bcfun
定义条款p和问的边界条件。使用函数签名
函数(pl ql,公关,qr] = bcfun (xl, ul, xr, ur, t)
ul
左边界的近似解吗xl =一个
,你的
在正确的边界近似解吗xr = b
。pl
和ql
列向量对应吗p和问评估在xl
。同样的,公关
和qr
对应于xr
。输出的元素数量
pl
,ql
,公关
,qr
等于方程的数量。
当米> 0和一个= 0附近,有界性的解决方案x= 0要求流量f消失在一个= 0。pdepe
强加边界条件自动,它忽略了返回值pl
和ql
。
例子
考虑边界条件 的时间间隔 。在解算器的形式,边界条件
这种形式很明显问术语是零。的p术语是零,以反映的价值观u。相应的函数
函数[pl, ql,公关,qr] = heatbc (xl, ul, xr, ur, t) pl = ul;ql = 0;公关= ur - 1;qr = 0;结束
数据类型:function_handle
xmesh
- - - - - -空间网格
向量
空间网格,指定为一个向量(x0 x1……xn)
指定一个数值解的点是每个价值要求tspan
。二阶近似的解决方案是在网格中指定xmesh
。pdepe
做不选择网x自动。您必须提供一个适当的固定网格xmesh
。
的元素xmesh
必须满足x0 < x1 <…< xn
。一般来说,最好使用密集网格点解决方案迅速变化。的长度xmesh
必须> = 3
,解决方案的计算成本很大程度上取决于的长度xmesh
。
不连续的问题,你应该将网格点不连续,这样的问题是在每个子区间平滑。然而,当米> 0,就没有必要使用细孔附近x= 0考虑到坐标奇异点。
例子:xmesh = linspace (0、5、25)
使用空间网格之间的25分0和5。
数据类型:单
|双
tspan
- - - - - -时间跨度的集成
向量
时间跨度的集成,指定为一个向量(t0 t1……tf)
指定的点的解决方案是要求每一个价值xmesh
。的pdepe
函数执行的时间与一个集成ODE求解器,动态地选择时间步和公式。的元素tspan
仅仅指定你想要的答案,因此解决方案的计算成本只有弱依赖的长度tspan
。
的元素tspan
必须满足t0 < t1 <…<特遣部队
。的长度tspan
必须> = 3
。
例子:tspan = linspace (0、5、5)
使用5 0到5之间的时间点。
数据类型:单
|双
选项
- - - - - -选择结构
结构数组
选择结构,指定为一个结构数组。使用odeset
结构函数来创建或修改选项。pdepe
万博1manbetx支持这些选项:
在大多数情况下,这些选项的默认值提供满意的解决方案。万博 尤文图斯
例子:选择= odeset (e-5 RelTol, 1)
指定一个相对误差的宽容1 e-5
。
数据类型:结构体
输出参数
索尔
——解决方案数组
三维数组
解决方案数组,作为一个三维数组返回。
pdepe
作为一个多维数组返回解决方案。u我=用户界面
=索尔
(:
,:
,我
)是一个近似我
解决方案的组件向量u。的元素用户界面
(j
,k
)=索尔
(j
,k
,我
)接近u我在(t,x)= (tspan
(j
),xmesh
(k
))。
用户界面
=索尔
(j
,:
,我
)接近组件我
在时间的解决方案tspan
(j
)和网格点xmesh (:)
。使用pdeval
计算近似及其偏导数∂u我/∂x点不包含在xmesh
。看到pdeval
获取详细信息。
tsol
-解决方案
列向量
解决方案的时候,作为一个列向量中指定的返回tspan
第一个终端事件之前。
唯一的
——解决方案时的事件
数组
事件的解决方案时,作为一个数组返回。事件在te
对应解决方案中返回万博 尤文图斯唯一的
,即
指定的事件发生。
te
——时间的事件
列向量
时间的事件,作为一个列向量返回。事件在te
对应解决方案中返回万博 尤文图斯唯一的
,即
指定的事件发生。
即
——指数函数触发事件
列向量
指数函数触发事件,作为一个列向量返回。事件在te
对应解决方案中返回万博 尤文图斯唯一的
,即
指定的事件发生。
提示
如果
里头=索尔(j:,我)
接近的组件我
在时间的解决方案tspan (j)
和网格点xmesh
,然后pdeval
评估近似及其偏导数∂u我/∂x数组的点xout
并返回它们uout
和duoutdx
:[uout, duoutdx] = pdeval (m, xmesh,里头,xout)
。的pdeval
函数计算偏导数∂u我/∂x而不是通量。通量是连续的,但在材料界面的偏导数可以跳。
算法
集成是完成了ode15s
解算器。pdepe
利用的能力ode15s
求解微分方程时出现的PDE包含椭圆方程,和处理雅克比指定的稀疏模式。
离散化后,椭圆方程的代数方程。如果初始条件向量的元素对应于椭圆方程离散化是不一致的,pdepe
之前试图调整它们的集成。出于这个原因,返回的解决方案的初始时间可能有一个离散误差与其他任何时候。如果网格足够好,pdepe
可以找到给定的初始条件接近一致。如果pdepe
显示一条消息,它很难找到一致的初始条件,细化网格。不需要调整的元素对应于抛物方程的初始条件的向量。
引用
[1]斯基尔,r·d·m·贝尔津什“抛物方程的空间离散化的方法在一个空间变量,“暹罗在科学杂志和统计计算1990年,卷。11日,pp.1-32。
版本历史
之前介绍过的R2006a
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。