Matlab Pde Toolbox:在一条线上或一个子流形上绘制解决方案

计算科学 pde matlab
2021-12-04 08:42:34

我正在使用 Matlab pde 工具箱来求解二维中的某个椭圆方程。

解决方案很好,尽管我确实需要沿着给定的线绘制它,即从代表解决方案的 3D 网格中切出一个平面切片。

我想不出一种巧妙地涉及工具箱功能的方法(即不涉及三角形网格上的低级插值)。

任何帮助表示赞赏。

1个回答

我在MATLAB central上发布了同样的问题Bill Greene友好地提供了答案

我简要报告并扩展它,以便对其他人有用。

比尔的解决方案:

这是创建这样一个情节的一种方法。假设您有 PDE Toolbox 网格器创建的点矩阵 p 和解向量 u。下面的函数将沿着由两个端点的 x 和 y 位置定义的线创建该解的图。我的例子是一个单位正方形的解决方案,我想要一个沿线 (0,.5) 到 (1,.5) 的图。我想在情节中包括 25 个点。如您所见,真正的工作是TriScatteredInterp由核心 MATLAB 中的函数完成的。

plotAlongLine(p, u, [0,.5], [1,.5], 25);

function plotAlongLine(p, u, xy1, xy2, numpts)
    x = linspace(xy1(1),xy2(1),numpts);
    y = linspace(xy1(2),xy2(2),numpts);
    F = TriScatteredInterp(p(1,:)', p(2,:)', u);
    uxy = F(x,y);
    figure; plot(x, uxy);  //REM: x is chosen here as a curvilinear coordinate
end

我想进一步指出,前一个函数允许绘制解u或其函数f(u),前提u是在网格节点上定义(通常发生在 FEM 近似解中)。

如果需要绘制在网格中心上定义的函数部分(例如 的函数grad u),她可以预先使用中心值pdeprtni函数中产生节点值函数的函数。