主要内容

单位盘上的泊松等式

此示例显示了如何在数字上解决泊松方程式,将数值解决方案与精确的解决方案进行比较,并在解决方案关闭之前优化网格。金宝搏官方网站

单位磁盘上的泊松方程可以写入零的单位边界条件 - Δ = 1 Ω = 0. δ Ω , 在哪里 Ω 是单位磁盘。确切的解决方案是

X y = 1 - X 2 - y 2 4.

对于大多数PDE,确切的解决方案是未知的。但是,单位盘上的泊松等式有一个已知的,精确的解决方案,您可以用来了解错误如何降低,因为您将网格缩短。

问题定义

创建PDE模型并包括几何图形。

model = createpde();几何Fremedges(模型,@ CircleG);

绘制几何形状并显示边缘标签以用于边界条件定义。

图pdegplot(模型,“EdgeLabels”'在');轴平等的

图中包含一个坐标轴。轴包含5个类型的类型,文本。

在所有边缘上指定零Dirichlet边界条件。

ApplyBoundaryCondition(模型,'dirichlet''边缘'1: model.Geometry.NumEdges,'U', 0);

指定系数。

指定COFEFICERS(模型,“米”,0,'D',0,'C',1,'一种',0,'F',1);

解决方案和粗网格的错误

创建一个最大元素尺寸为0.1的网格。

hmax = 0.1;generatemesh(型号,'hmax',hmax);图pdemesh(型号);轴平等的

图中包含一个坐标轴。轴包含2个类型的型号。

解偏微分方程并画出解。

结果= Solvepde(型号);u =结果。不管地区;pdeplot(模型,'xydata',U)标题('数字解决方案');Xlabel('X') ylabel ('是'

图中包含一个坐标轴。具有标题数值解决方案的轴包含类型贴片的对象。

将此结果与精确的分析解决方案进行比较并绘制错误。

p = model.mesh.nodes;精确=(1  -  p(1,:)。^ 2  -  p(2,:)。^ 2)/ 4;pdeplot(模型,'xydata',U  - 确切的')标题('错误');Xlabel('X') ylabel ('是'

图中包含一个坐标轴。标题为Error的轴包含patch类型的对象。

金宝搏官方网站具有精制网格的解决方案和错误

在每次迭代中精炼网格并将结果与​​精确解决方案进行比较时,解决方程。每次细化都会减半Hmax.价值。在误差矢量的无限常态下方精确到网状物 5. 10. - 7.

hmax = 0.1;error = [];err = 1;尽管err> 5e-7%运行直到错误<= 5e-7generatemesh(型号,'hmax',hmax);%细化网格结果= Solvepde(型号);u =结果。不管地区;p = model.mesh.nodes;精确=(1  -  p(1,:)。^ 2  -  p(2,:)。^ 2)/ 4;err = norm(U  - 精确',INF);%与精确的解决方案相比错误= [错误错误];%保持错误的历史hmax = hmax / 2;结尾

绘制每个迭代的错误矢量的无限常态。误差的值在每次迭代中减少。

绘图(错误,'rx'“MarkerSize”12);甘氨胆酸ax =;斧子。XTick = 1:元素个数(错误);标题('错误历史');Xlabel('迭代');ylabel('错误的规范');

图中包含一个坐标轴。具有标题错误历史记录的轴包含类型线的对象。

绘制最终网格及其相应的解决方案。

图pdemesh(型号);轴平等的

图中包含一个坐标轴。轴包含2个类型的型号。

图pdeplot(模型,'xydata',U)标题('数字解决方案');Xlabel('X') ylabel ('是'

图中包含一个坐标轴。具有标题数值解决方案的轴包含类型贴片的对象。

将结果与精确的分析解决方案进行比较并绘制错误。

p = model.mesh.nodes;精确=(1  -  p(1,:)。^ 2  -  p(2,:)。^ 2)/ 4;pdeplot(模型,'xydata',U  - 确切的')标题('错误');Xlabel('X') ylabel ('是'

图中包含一个坐标轴。标题为Error的轴包含patch类型的对象。