主要内容

解决单一PDE

这个示例展示了如何制定、计算和绘制单个PDE的解决方案。

考虑偏微分方程

π 2 u t 2 u x 2

该等式在间隔内定义 0 x 1 为次 t 0 .在 t 0 ,解决方案满足初始条件

u x 0 π x

同样,在 x 0 x 1 时,解满足边界条件

u 0 t 0

π e - t + u x 1 t 0

要解决MATLAB中的该等式,您需要编写方程式,初始条件和边界条件,然后在调用求解器之前选择合适的解决方案网格pdepe.您可以将所需的函数作为本地函数包含在文件的末尾(如这里所做的),或者将它们作为单独的、命名的文件保存在MATLAB路径的一个目录中。

代码方程式

在你编写方程式之前,你需要把它重写成pdepe解决者预期。标准形式pdepe预计是

c x t u u x u t x - x x f x t u u x + 年代 x t u u x

用这种形式写入,PDE成为

π 2 u t x 0 x x 0 u x + 0

把这个等式写成合适的形式,你就可以读出相关的术语了:

0

c x t u u x π 2

f x t u u x u x

年代 x t u u x 0

现在,您可以创建一个代码等式的函数。函数应该有签名[c,f,s] = pdex1pde(x,t,u,dudx)

  • x是独立的空间变量。

  • t为独立时间变量。

  • u因变量是否被微分xt

  • dudx是部分空间衍生物 u / x

  • 输出cf, 和年代对应于所期望的标准PDE方程形式的系数pdepe.这些系数在输入变量方面编码xtu, 和dudx

结果,该示例中的等式可以由该功能表示:

功能[c,f,s] = pdex1pde(x,t,u,dudx)f = dudx;s = 0;结束

(注意:在示例的最后,所有函数都包含为局部函数。)

代码初始条件

接下来,编写返回初始条件的函数。初始条件在第一次值应用Tspan(1).函数应该有签名情况= pdex1ic (x)

对应的函数是

功能x = sinx (x);结束

代码边界条件

现在,写一个计算边界条件的函数。对于区间上的问题 一个 x b ,边界条件适用于所有 t 和任何一种 x 一个 或者 x b .求解器所期望的边界条件的标准形式是

p x t u + x t f x t u u x 0

以本标准形式重写边界条件并读取系数值。

x 0 ,等式是

u 0 t 0 u + 0 u x 0

系数:

  • p 0 t u u

  • 0 t 0

x 1 ,等式是

π e - t + u x 1 t 0 π e - t + 1 u x 1 t 0

系数:

  • p 1 t u π e - t

  • 1 t 1

由于边界条件函数表示为 f x t u u x ,此术语已在主PDE函数中定义,您无需在边界条件函数中指定这段方程。您只需要指定值 p x t u x t 在每一个边界。

边界函数应该使用函数签名[pl, ql,公关,qr] = pdex1bc (xl, ul, xr, ur, t)

  • 投入xlul对应于 u x 对于左边界。

  • 投入xr你的对应于 u x 右边界。

  • t为独立时间变量。

  • 输出plql对应于 p x t u x t 左边界( x 0 对于这个问题)。

  • 输出公关qr对应于 p x t u x t 对于正确的边界( x 1 对于这个问题)。

本例中的边界条件用函数表示:

功能[pl,ql,pr,qr] = pdex1bc(xl,ul,xr,ur,t) pl = ul;ql = 0;Pr = PI * exp(-t);qr = 1;结束

选择解决方案网

在解这个方程之前,你需要指定网格点 t x 你想要的pdepe评估解决方案。将点指定为vectorstx.向量tx在求解器中扮演不同的角色。特别地,解的代价和精度强烈地依赖于向量的长度x.然而,计算对向量中的值的敏感性要小得多t

对于这个问题,使用一个网格,在空间间隔[0,1]中有20个等距点,5个值t从时间间隔[0,2]。

x = linspace (0, 1, 20);t = linspace(0、2、5);

解决方程

最后,利用对称性求解方程,微分方程,初始条件,边界条件,网格xt

m = 0;索尔= pdepe (m, @pdex1pde, @pdex1ic @pdex1bc x, t);

pdepe返回3-D数组的解索尔,在那里索尔(i, j, k)近似k溶液的第一个分量 u k 评估t(我)x(j).的大小索尔长度(t)-经过-长度(x)-经过-长度(情况),因为情况为每个解决方案组件指定初始条件。对于这个问题,u只有一个组件,所以索尔是一个5 × 20矩阵,但一般来说,你可以提取k使用命令解决方案组件u = sol(:,:,k)

从中提取第一个解决方案组件索尔

u =索尔(:,:1);

策划解决方案

创建解决方案的表面图。

冲浪(X,T,U)标题('数值解决方案用20个网格点')xlabel(“距离x”)ylabel(“t”

图中包含一个坐标轴。带有20个网格点计算的标题数值溶液的轴包含类型表面的对象。

选择此问题的初始条件和边界条件,以便将存在分析解决方案

u x t e - t π x

用相同的网格点绘制分析解决方案。

冲浪(x, t, exp (- t)‘* sin(π* x))标题('真正的解决方案绘制了20个网格点')xlabel(“距离x”)ylabel(“t”

图中包含一个坐标轴。用20个网格点绘制的标题为“真解”的轴包含一个类型表面的对象。

现在,比较数字和分析解决方案金宝搏官方网站 t f 的最终值 t .在这个例子中 t f 2

plot(x,u(结束,:),'o',x,exp(-t(结束))* sin(pi * x))标题(t = 2时的解)传说(“数值,20网格点”“分析”'地点'“南”)xlabel(“距离x”)ylabel(“u (x, 2)”

图中包含一个坐标轴。标题为“解在t = 2”的轴包含2个类型为line的对象。这些对象代表数值,20网格点,解析。

本地函数

这里列出的是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;结束%----------------------------------------------

另请参阅

相关话题