我正在使用 Matlab pde 工具箱来求解二维中的某个椭圆方程。
解决方案很好,尽管我确实需要沿着给定的线绘制它,即从代表解决方案的 3D 网格中切出一个平面切片。
我想不出一种巧妙地涉及工具箱功能的方法(即不涉及三角形网格上的低级插值)。
任何帮助表示赞赏。
我正在使用 Matlab pde 工具箱来求解二维中的某个椭圆方程。
解决方案很好,尽管我确实需要沿着给定的线绘制它,即从代表解决方案的 3D 网格中切出一个平面切片。
我想不出一种巧妙地涉及工具箱功能的方法(即不涉及三角形网格上的低级插值)。
任何帮助表示赞赏。
我在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
函数中产生节点值函数的函数。