这个示例展示了如何制定、计算和绘制单个PDE的解决方案。
考虑偏微分方程
该等式在间隔内定义 为次 .在 ,解决方案满足初始条件
同样,在 和 时,解满足边界条件
要解决MATLAB中的该等式,您需要编写方程式,初始条件和边界条件,然后在调用求解器之前选择合适的解决方案网格pdepe
.您可以将所需的函数作为本地函数包含在文件的末尾(如这里所做的),或者将它们作为单独的、命名的文件保存在MATLAB路径的一个目录中。
在你编写方程式之前,你需要把它重写成pdepe
解决者预期。标准形式pdepe
预计是
.
用这种形式写入,PDE成为
.
把这个等式写成合适的形式,你就可以读出相关的术语了:
现在,您可以创建一个代码等式的函数。函数应该有签名[c,f,s] = pdex1pde(x,t,u,dudx)
:
x
是独立的空间变量。
t
为独立时间变量。
u
因变量是否被微分x
和t
.
dudx
是部分空间衍生物
.
输出c
,f
, 和年代
对应于所期望的标准PDE方程形式的系数pdepe
.这些系数在输入变量方面编码x
,t
,u
, 和dudx
.
结果,该示例中的等式可以由该功能表示:
功能[c,f,s] = pdex1pde(x,t,u,dudx)f = dudx;s = 0;结束
(注意:在示例的最后,所有函数都包含为局部函数。)
接下来,编写返回初始条件的函数。初始条件在第一次值应用Tspan(1)
.函数应该有签名情况= pdex1ic (x)
.
对应的函数是
功能x = sinx (x);结束
现在,写一个计算边界条件的函数。对于区间上的问题 ,边界条件适用于所有 和任何一种 或者 .求解器所期望的边界条件的标准形式是
以本标准形式重写边界条件并读取系数值。
为 ,等式是
系数:
为 ,等式是
系数:
由于边界条件函数表示为 ,此术语已在主PDE函数中定义,您无需在边界条件函数中指定这段方程。您只需要指定值 和 在每一个边界。
边界函数应该使用函数签名[pl, ql,公关,qr] = pdex1bc (xl, ul, xr, ur, t)
:
投入xl
和ul
对应于
和
对于左边界。
投入xr
和你的
对应于
和
右边界。
t
为独立时间变量。
输出pl
和ql
对应于
和
左边界(
对于这个问题)。
输出公关
和qr
对应于
和
对于正确的边界(
对于这个问题)。
本例中的边界条件用函数表示:
功能[pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t) pl = ul;ql = 0;Pr = PI * exp(-t);qr = 1;结束
在解这个方程之前,你需要指定网格点
你想要的pdepe
评估解决方案。将点指定为vectorst
和x
.向量t
和x
在求解器中扮演不同的角色。特别地,解的代价和精度强烈地依赖于向量的长度x
.然而,计算对向量中的值的敏感性要小得多t
.
对于这个问题,使用一个网格,在空间间隔[0,1]中有20个等距点,5个值t
从时间间隔[0,2]。
x = linspace (0, 1, 20);t = linspace(0、2、5);
最后,利用对称性求解方程米
,微分方程,初始条件,边界条件,网格x
和t
.
m = 0;索尔= pdepe (m, @pdex1pde, @pdex1ic @pdex1bc x, t);
pdepe
返回3-D数组的解索尔
,在那里索尔(i, j, k)
近似k
溶液的第一个分量
评估t(我)
和x(j)
.的大小索尔
是长度(t)
-经过-长度(x)
-经过-长度(情况)
,因为情况
为每个解决方案组件指定初始条件。对于这个问题,u
只有一个组件,所以索尔
是一个5 × 20矩阵,但一般来说,你可以提取k
使用命令解决方案组件u = sol(:,:,k)
.
从中提取第一个解决方案组件索尔
.
u =索尔(:,:1);
创建解决方案的表面图。
冲浪(X,T,U)标题('数值解决方案用20个网格点')xlabel(“距离x”)ylabel(“t”)
选择此问题的初始条件和边界条件,以便将存在分析解决方案
用相同的网格点绘制分析解决方案。
冲浪(x, t, exp (- t)‘* sin(π* x))标题('真正的解决方案绘制了20个网格点')xlabel(“距离x”)ylabel(“t”)
现在,比较数字和分析解决方案金宝搏官方网站 的最终值 .在这个例子中 .
plot(x,u(结束,:),'o',x,exp(-t(结束))* sin(pi * x))标题(t = 2时的解)传说(“数值,20网格点”,“分析”,'地点',“南”)xlabel(“距离x”)ylabel(“u (x, 2)”)
这里列出的是PDE Solver PDepe调用来计算解决方案的本地辅助功能。或者,您可以将这些函数保存为MATLAB路径上的目录中的自己文件。
功能[c,f,s] = pdex1pde(x,t,u,dudx)%方程来解决c = pi ^ 2;f = dudx;s = 0;结束%----------------------------------------------功能情况= pdex1ic (x)% 初始条件u0 = sin(pi * x);结束%----------------------------------------------功能[pl, ql,公关,qr] = pdex1bc (xl, ul, xr, ur, t)% 边界条件pl = ul;ql = 0;Pr = PI * exp(-t);qr = 1;结束%----------------------------------------------